HDU - 4608 I-number
生活随笔
收集整理的這篇文章主要介紹了
HDU - 4608 I-number
小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.
題意:
給你一個(gè)x,讓你構(gòu)造一個(gè)y,y的要求:
題解:
模擬,盡可能的模擬,用字符串模擬
先將各位相加得到sum,然后看sum與最近的10的倍數(shù)的距離w,然后加上w得到sum1,然后看sum1是否是10的倍數(shù),如果是輸出,如果不是再重復(fù)一遍上面的步驟,一定就能得到:
舉例:
90—>91
99---->100---->108
注意y>x,y不能等于x
代碼:
#include<bits/stdc++.h> #define debug(a,b) printf("%s = %d\n",a,b); typedef long long ll; using namespace std;inline int read(){int s=0,w=1;char ch=getchar();while(ch<'0'||ch>'9'){if(ch=='-')w=-1;ch=getchar();}while(ch>='0'&&ch<='9') s=s*10+ch-'0',ch=getchar();//s=(s<<3)+(s<<1)+(ch^48);return s*w; } char x[1000000]; int main() {int t;cin>>t;while(t--){memset(x,0,sizeof(x));scanf("%s",x);int w;int sum=0;for(int i=0;i<strlen(x);i++){sum+=(x[i]-'0');}int q=x[strlen(x)-1]-'0';w=10-sum%10;int op=0;if(q+w>=10){x[strlen(x)-1]='0'; w=1;for(int i=strlen(x)-2;i>=0;i--){int ww=x[i]-'0'+w;x[i]=(char)((x[i]-'0'+w)%10+'0');if(ww>=10)w=1;else w=0;}if(w==1){int len=strlen(x);for(int i=0;i<len;i++){x[i+1]=x[i];}x[0]='1';}}else {x[strlen(x)-1]=(char)((x[strlen(x)-1]-'0'+w)%10+'0');}sum=0;for(int i=0;i<strlen(x);i++){sum+=(x[i]-'0');}if(sum%10==0){cout<<x<<endl;continue;}q=x[strlen(x)-1]-'0';w=10-sum%10;op=0;if(q+w>=10){x[strlen(x)-1]='0'; w=1;for(int i=strlen(x)-2;i>=0;i--){int ww=x[i]-'0'+w;x[i]=(char)((x[i]-'0'+w)%10+'0');if(ww>=10)w=1;else w=0;}if(w==1){int len=strlen(x);for(int i=0;i<len;i++){x[i+1]=x[i];}x[0]='1';}}else {x[strlen(x)-1]=(char)((x[strlen(x)-1]-'0'+w)%10+'0');}cout<<x<<endl;}return 0; }總結(jié)
以上是生活随笔為你收集整理的HDU - 4608 I-number的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: 钙离子在人体中的作用
- 下一篇: 牙根发炎怎么快速消炎?