NOIP 數字反轉
阿新 • • 發佈:2018-12-29
題目描述
給定一個整數,請將該數各個位上數字反轉得到一個新數。新數也應滿足整數的常見形
式,即除非給定的原數為零,否則反轉後得到的新數的最高位數字不應為零(參見樣例2)。
【資料範圍】
-1,000,000,000 ≤ N≤ 1,000,000,000。
輸入格式
輸入共 1 行,一個整數N。
輸出格式
輸出共 1 行,一個整數,表示反轉後的新數。
Simple input & output
123
321
給定一個整數,請將該數各個位上數字反轉得到一個新數。新數也應滿足整數的常見形
式,即除非給定的原數為零,否則反轉後得到的新數的最高位數字不應為零(參見樣例2)。
【資料範圍】
-1,000,000,000 ≤ N≤ 1,000,000,000。
輸入格式
輸入共 1 行,一個整數N。
輸出格式
輸出共 1 行,一個整數,表示反轉後的新數。
Simple input & output
123
321
#include <iostream> using namespace std; int main() { int n,m=0; cin>>n; while(n!=0) { m=m*10+n%10; n/=10; } cout<<m; return 0; }
用陣列也可以,但是窩寫了一個30分(還是太弱),但陣列很麻煩誒,算了,貼一個黃學長的陣列寫法吧
#include<iostream> #include<cstdio> #include<cstring> using namespace std; string a,b; int ans=-1,total; bool jud(int x) { if(x>0&&b[x-1]!=' ')return 0; for(int k=0;k<a.length();k++) if(b[x+k]!=a[k])return 0; if(b[x+a.length()]!=' ')return 0; if(ans==-1)ans=x; total++; return 1; } int main() { getline(cin,a);getline(cin,b); for(int i=0;i<a.length();i++) if(a[i]>='a')a[i]-=('a'-'A'); for(int i=0;i<b.length();i++) if(b[i]>='a')b[i]-=('a'-'A'); for(int i=0;i<b.length();i++) jud(i); if(ans==-1)printf("-1"); else printf("%d %d",total,ans); return 0; }