2.1 基础-数字翻转
生活随笔
收集整理的這篇文章主要介紹了
2.1 基础-数字翻转
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
題目
對于一個整數X,定義操作rev(X)為將X按數位翻轉過來,并且去除掉前導0。例如:
如果 X = 123,則rev(X) = 321;
如果 X = 100,則rev(X) = 1.
現在給出整數x和y,要求rev(rev(x) + rev(y))為多少?
輸入描述:
輸入為一行,x、y(1 ≤ x、y ≤ 1000),以空格隔開。
輸出描述:
輸出rev(rev(x) + rev(y))的值
示例1
輸入
123 100
輸出
223
推薦第二種和第四種寫法~
代碼一(比較繁瑣)
#include <iostream> using namespace std; int main() {int x,y,a,b,k,j,i;int c[1001],d[1001],e[1001];cin>>x>>y;if(x==0 && y==0) cout<<"0";else{for(i=0;x>0;x/=10){c[i]=x%10;i++;}for(j=i-1;j>=0;j--){if(c[j]!=0) break;}a=b=0;for(i=0;i<=j;i++){a=a*10+c[i];}for(i=0;y>0;y/=10){d[i]=y%10;i++;}for(k=i-1;k>=0;k--){if(d[k]!=0) break;}for(i=0;i<=k;i++){b=b*10+d[i]; } int n=a+b;for(i=0;n>0;n/=10){e[i]=n%10;i++;}for(j=0;j<i;j++){if(e[j]!=0) break;}for(k=j;k<i;k++){cout<<e[k];}}cout<<endl;return 0; }代碼二(鍛煉思維)
#include <iostream> #include <string.h> using namespace std; const int MAX=1e3 + 10; int main() {char x[100],y[100];int l1,l2,a,b,j,i;while(cin>>x>>y){a=b=0;l1=strlen(x);l2=strlen(y);for(i=l1-1;i>=0;i--){a=a*10+x[i]-'0';}for(i=l2-1;i>=0;i--){b=b*10+y[i]-'0';}a=a+b;for(i=0;a>0;i++){if(a%10) break;a/=10;}for(j=0;a>0;j++){cout<<a%10;a/=10;}cout<<endl;} return 0; }代碼三
#include<bits/stdc++.h> using namespace std; char x[100],y[100]; vector<int> ann; int main(){cin>>x>>y;int l1=strlen(x);int l2=strlen(y);reverse(x,x+l1);reverse(y,y+l2);int n,m;n=m=0;for(int i=0;i<l1;i++){n=n*10+x[i]-'0';}for(int i=0;i<l2;i++){m=m*10+y[i]-'0';}int kk=n+m;while(kk){ann.push_back(kk%10);kk/=10;}int id=10000;for(int i=0;i<ann.size();i++){if(ann[i]){id=i;break;}}if(id==10000){cout<<0<<endl;return 0;}for(int i=id;i<ann.size();i++) cout<<ann[i];puts("");//換行return 0; }代碼四(簡潔高效)
#include <iostream> using namespace std; int rev(int a) {int ans=0;while(a>0){ans=ans*10+a%10;a/=10;}return ans; } int main() {int x,y; while(cin>>x>>y){cout<<rev(rev(x)+rev(y))<<endl;}return 0; }總結
以上是生活随笔為你收集整理的2.1 基础-数字翻转的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: “高级”数据结构——树状数组
- 下一篇: 三步修改CodeBlocks主题