首页 > 代码库 > hdu4608 I-number
hdu4608 I-number
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=4608
题意:给定一个数X,注意X是个大数,X的长度不超过1e5。
让你求出一个Y,满足三个条件,Y>X && Y%10==0 还有就是满足以上两个条件最小的。
思路:我想的这个题的意思就是个大数加法。让X加上1~10循环试一下肯定有符合题意的。
AC代码:
#include<iostream> #include<cstdio> #include<algorithm> #include<cstring> using namespace std; const int INF=0x3f3f3f3f; const int maxn=1e5+5; char str[maxn]; int num[maxn],a[maxn],b[maxn]; int main() { int T; scanf("%d",&T); while(T--) { cin>>str; int l=strlen(str); int sum=0; for(int i=0; i<l; i++)///0是最高位 num[i]=str[i]-‘0‘; for(int i=0; i<l; i++) b[i]=num[l-1-i]; ///0是最低位 int len; for(int k=1; k<=20; k++) { memset(a,0,sizeof(a)); for(int i=0; i<l; i++)a[i]=b[i]; len=l; a[0]+=k; for(int i=0; i<len; i++) { a[i+1]+=a[i]/10; a[i]%=10; } while(a[len]) { a[len+1]=a[len]/10; a[len]%=10; len++; } int ans=0; for(int i=0; i<len; i++) ans+=a[i]; if(ans%10==0) break; } for(int i=len-1; i>=0; i--) printf("%d",a[i]); puts(""); } return 0; }
hdu4608 I-number
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。