标签:高精度加法
题目来源:http://acm.hdu.edu.cn/showproblem.php?pid=4608
1 202
208
题意: 给一个正整数x ,要你求最小的y。 使得的y>x 且y的各个位数之和能被10整除。 x的程度不超过 105.
题解: 简单大数加法 .
#include<iostream> #include<string> #define maxn 100000+5 using namespace std; string str; int sum=0,t; int calcbit(string &x) { int s=0; for(int i=0;i<x.size();i++) s+=(x[i]-'0'); return s; } void Add(string &x) { string temp="";char ch; int num[maxn]={0},len=x.size(); for(int i=0;i<len;i++)num[i]=(x[len-i-1]-'0'); num[0]++; for(int i=0;i<len;i++){ if(num[i]>9){ num[i+1]+=num[i]/10; num[i]%=10; } } int i; for(i=len;i>0&&!num[i];)i--; for(;i>=0;i--)temp+=(num[i]+'0'); len=temp.size(); for(int i=0;i<=len/2;i++){ ch=x[i];x[i]=x[len-i-1];x[len-i-1]=ch; } x=temp; } int main() { cin.sync_with_stdio(false); cin>>t; while(t--) { cin>>str; Add(str); sum=calcbit(str); while(sum%10){ Add(str); sum=calcbit(str); } cout<<str<<endl; } return 0; }
标签:高精度加法
原文地址:http://blog.csdn.net/mummyding/article/details/41912433