您的位置:首页 > 其它

1023. Have Fun with Numbers (20)

2015-02-08 23:16 316 查看
3个点不过!!!!因为加法写错了!!!

点击打开链接

#include <cstdio>
#include <cstring>
struct bign{
int len;
int x[21];
bign(){
len=0;
for(int i=0;i<21;i++){
x[i]=0;
}
}
};
bign change(char c[]){
bign big;
for(int i=strlen(c)-1;i>=0;i--){
big.x[big.len++]=c[i]-'0';
}
return big;
}
//错误的加法
//bign add(bign a,bign b){
// int len=a.len<b.len?b.len:a.len;
// bign c;
// int jin=0;
// for(int i=0;i<len;i++){
// int tmp=a.x[i]+b.x[i]+jin;
// if(tmp>10){
// c.x[c.len++]=tmp%10;
// jin=1;
// }else{
// c.x[c.len++]=tmp;
// jin=0;
// }
// }
// if(jin==1){
// c.x[c.len++]=jin;
// }
// return c;
//}
bign add(bign a,bign b){
int len=a.len<b.len?b.len:a.len;
bign c;
int jin=0;
for(int i=0;i<len;i++){
int tmp=a.x[i]+b.x[i]+jin;
c.x[c.len++]=tmp%10;
jin=tmp/10;

}
if(jin!=0){
c.x[c.len++]=jin;
}
return c;
}
void hashh(int h[],bign a){
for(int i=0;i<a.len;i++){
h[a.x[i]]++;
}
}

int main(){
freopen("in.txt","r",stdin);
char c[100];
gets(c);
bign a=change(c);
bign b=add(a,a);
if(a.len!=b.len){
printf("No\n");
}else{
int ha[10];
memset(ha,0,sizeof(ha));
hashh(ha,a);
int hb[10];
memset(hb,0,sizeof(hb));
hashh(hb,b);
int flag=1;
for(int i=0;i<10;i++){
if(ha[i]!=hb[i]){
flag=0;
break;
}
}
if(flag){
printf("Yes\n");
}else{
printf("No\n");
}
}
for(int i=b.len-1;i>=0;i--){
printf("%d",b.x[i]);
}
printf("\n");
return 0;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: