1. 程式人生 > >NOIP 數字反轉

NOIP 數字反轉

題目描述
給定一個整數,請將該數各個位上數字反轉得到一個新數。新數也應滿足整數的常見形
式,即除非給定的原數為零,否則反轉後得到的新數的最高位數字不應為零(參見樣例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;
    }