首页 > 学院 > 开发设计 > 正文

1023. Have Fun with Numbers (20)

2019-11-14 13:10:38
字体:
来源:转载
供稿:网友

题目:https://www.patest.cn/contests/pat-a-PRactise/1023

参考代码:

#include<stdio.h>#include<string.h>struct bign{    int d[21];    int len;    bign(){        memset(d,0,sizeof(d));        len=0;    }};bign change(char str[]){    bign a;    a.len=strlen(str);    for(int i=0;i<a.len;i++){        a.d[i]=str[a.len-i-1]-'0';    }    return a;}bign mul(bign a,int b){    bign c;    int carry=0;    for(int i=0;i<a.len;i++){        int temp=a.d[i]*b+carry;        c.d[c.len++]=temp%10;         carry=temp/10;    }     while(carry!=0){        c.d[c.len++]=carry%10;        carry/=10;    }    return c;}bool Judge(bign a,bign b){    if(a.len!=b.len)    return false;    int count[10]={0};    for(int i=0;i<a.len;i++){        count[a.d[i]]++;     }    for(int i=0;i<a.len;i++){        count[b.d[i]]--;    }    for(int i=0;i<10;i++){        if(count[i]!=0)            return false;    }    return true;} void print(bign a){    for(int i=a.len-1;i>=0;i--){        printf("%d",a.d[i]);    }}int main(){    char str[21];    scanf("%s",str);    bign a=change(str);    bign b=mul(a,2);    if(Judge(a,b))        printf("Yes/n");    else        printf("No/n");    print(b);}个人代码(有瑕疵):
#include<cstdio>  #include<cstring>  #include<cstdlib> #include<cmath>#include<algorithm>  using namespace std;  int main()  {   	int a[21],b[21],t=0,pos=0,c[10]={0},flag=1;	char s[21];	gets(s);	int len=strlen(s);	for(int i=0;i<len;i++){	    a[i]=s[len-i-1]-'0';	}	for(int i=0;i<len;i++){	    int temp=a[i]*2+t;		t=temp/10;		b[pos++]=temp%10;	}	if(pos!=len)		flag=0;	 for(int i=0;i<len;i++){	      c[a[i]]++; 		  c[b[i]]--; 	  }	 for(int i=0;i<10;i++){	    if(c[i]!=0)			flag=0;	  }	  if(flag==1){	    printf("Yes/n");		for(int i=len-1;i>=0;i--){		  printf("%d",b[i]);		}	  }else{	  printf("No/n");	  for(int i=len-1;i>=0;i--){		  printf("%d",b[i]);		}	  }	    system("pause");  }                  


发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表