注册 登录  
 加关注
   显示下一条  |  关闭
温馨提示!由于新浪微博认证机制调整,您的新浪微博帐号绑定已过期,请重新绑定!立即重新绑定新浪微博》  |  关闭

记录创意的火花

天天学习,好好向上

 
 
 

日志

 
 

有道和topcoder的比赛题  

2009-06-01 12:15:54|  分类: 默认分类 |  标签: |举报 |字号 订阅

  下载LOFTER 我的照片书  |

Problem Statement
    
给定一个正整数n. 你可以修改n的十进制表示中任意一位而得到另一个十进制表示的数,你修改后得到的新

数需要严格小于n (这个新数可以有一些前导0).请返回按照上述要求修改后得到的数中最大的一个。
Definition
    
Class:
ChangeDigit
Method:
change
Parameters:
int
Returns:
int
Method signature:
int change(int n)
(be sure your method is public)
    

Constraints
-
n 一个1到1,000,000,000 之间正整数。
Examples
0)

    
123
Returns: 122
修改了其中一位以后, 我们可以得到如下一些小于n的数: 023, 103, 113, 120, 121, 和 122. 其中最大的数

是 122。
1)

    
94040
Returns: 94030

2)

    
999999999
Returns: 999999998

3)

    
1000000000
Returns: 0
在这个样例中, 我们只有一种修改方案,即将首位的 '1' 替换成 '0' 以得到 "0000000000", 这是一个十进制

表示的0 (有9个前导0)。
4)

    
4321000
Returns: 4320000

This problem statement is the exclusive and proprietary property of TopCoder, Inc. Any unauthorized

use or reproduction of this information without the prior written consent of TopCoder, Inc. is strictly

prohibited. (c)2003, TopCoder, Inc. All rights reserved.

 


#include <string>
#include <iostream>

using namespace std;


class ChangeDigit{


public:
int change(int n);
};
int ChangeDigit:: change(int n){
int i=1;
while(n/i%10==0)
      i*=10;

return ( n - i);

}
Problem Statement
????

 

 


双倍超立方数是指一个正整数可以正好被拆分为两种不同的a^3+b^3的方式,其中a,b均为整数且0<a<=b

。对于任何一个指定的 int n, 返回所有的小于等于n的双倍超立方数的个数。
Definition
????
Class:
TwiceSuperCubic
Method:
count
Parameters:
int
Returns:
int
Method signature:
int count(int n)
(be sure your method is public)
????

Constraints
-
n取值范围为1到1,000,000,000(含)
Examples
0)

????
1
Returns: 0

1)

????
1729
Returns: 1
1729=1^3+12^3 1729=9^3+10^3
2)

????
475574
Returns: 27

 
This problem statement is the exclusive and proprietary property of TopCoder, Inc. Any unauthorized

use or reproduction of this information without the prior written consent of TopCoder, Inc. is strictly

prohibited. (c)2003, TopCoder, Inc. All rights reserved.

我的代码:

#include <string>
#include <iostream>
using namespace std;


class TwiceSuperCubic{


public:
int count(int n);
};
int TwiceSuperCubic:: count(int n){
 int s[1001];
 for(int i=1;i<=1000;i++)
  s[i]=i*i*i;
if (n<1729)
     return 0;
if(n==1729)
     return 1;
int c=1;
 int a=1 ,b=1,count=0;
for(int temp=1730;temp<=n;temp++)
{
 
        count=0;
     for(a=1; s[a]+s[a]<=temp;a++)
    {
     for(b=a;s[a]+s[b]<=temp;b++)
 
  {  if(s[a]+s[b]==temp) count++;
      if(count>2) break;
  }

   if(count>2) break;
     }
  if(count==2) c++;
 
}
 return c;
}


高人的代码:

int count(int n){
map<int ,int> map;
int ans;
int t;
for(int i=1;i<=1000,i++)
    for (int j=i;j<=1000;j++){
    t=i*i*i+j*j*j;
    map[t]++;
    if(map[t]==2) ans++;
    else if(map[t]==3) ans--;
}
return ans;
}

差距不是一点点啊。。。。。。努力了

  评论这张
 
阅读(663)| 评论(0)
推荐 转载

历史上的今天

在LOFTER的更多文章

评论

<#--最新日志,群博日志--> <#--推荐日志--> <#--引用记录--> <#--博主推荐--> <#--随机阅读--> <#--首页推荐--> <#--历史上的今天--> <#--被推荐日志--> <#--上一篇,下一篇--> <#-- 热度 --> <#-- 网易新闻广告 --> <#--右边模块结构--> <#--评论模块结构--> <#--引用模块结构--> <#--博主发起的投票-->
 
 
 
 
 
 
 
 
 
 
 
 
 
 

页脚

网易公司版权所有 ©1997-2017