杭电水题之2097题找错误

[复制链接]
查看11 | 回复2 | 2010-6-15 09:25:36 | 显示全部楼层 |阅读模式
这是鄙人的代码..不知道为什么总是wrong answer
希望牛人们找下我的错误..写代码给我就不用了。。
要的是发现下我程序中的错误.谢谢
#include
using namespace std;
int main()
{
int n;
cin>>n;
while(n!=0){
int d1=n%10; int c1=(n-d1)/10%10;int b1=(n-d1-10*c1)/100%10; int a1=n/1000;

int sum1=a1+b1+c1+d1;
int d2=n%16; int c2=(n-d2)/16%16;int b2=n/256;

int sum2=b2+c2+d2;
int d3=n%12; int c3=(n-d3)/12%12;int b3=(n-d3-12*c3)/144%12;int a3=n/1728;

int sum3=a3+b3+c3+d3;

if(sum1==sum2&&sum1==sum3)

cout>n;
}
return 0;
}

回复

使用道具 举报

千问 | 2010-6-15 09:25:36 | 显示全部楼层
最大的错误:sum1,sum2,sum3的求法是错的,你是看着sample来解题的吧,的确2992这样处理没问题,但是假设出现了位数不是4位的sky数呢?比如5位的sky数就处理错误了,像sum1这样的话就只处理到了前4位。还有一个不算是错误,但是处理麻烦了:比如sum1处理的时候,int d1=n%10; int c1=(n-d1)/10%10;int b1=(n-d1-10*c1)/100%10; int a1=n/1000;int sum1=a1+b1+c1+d1;int的除是整除,没必要减去之前算出来的数:int d1=n%10; int c1=n/10%10;int b1=n/100%10; i
回复

使用道具 举报

千问 | 2010-6-15 09:25:36 | 显示全部楼层
代码风格有待提高
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

主题

0

回帖

4882万

积分

论坛元老

Rank: 8Rank: 8

积分
48824836
热门排行