深入JS繼承
阿新 • • 發佈:2020-11-28
時間限制 1.00s
記憶體限制 125.00MB
題目描述
給定一個整數,請將該數各個位上數字反轉得到一個新數。新數也應滿足整數的常見形式,即除非給定的原數為零,否則反轉後得到的新數的最高位數字不應為零(參見樣例2)。
輸入格式
一個整數\(N\)
輸出格式
一個整數,表示反轉後的新數。
輸入輸出樣例
輸入 #1 | 輸出 #1 |
---|---|
123 |
321 |
輸入 #2 | 輸出 #2 |
-380 |
-83 |
說明/提示
資料範圍
\(−1,000,000,000≤N≤1,000,000,000\)
noip2011普及組第一題
PZ' solution
1.首先判斷\(N\)是否為負數——如果\(N\)為負數,設計一個負數標記進行標記,隨後將\(N\)
2.使用\(N \% 10\)每次取 \(N\) 的最後一位,用新的變數\(ans\)累加它;
3.即\(ans=ans*10+N \% 10\),其作用是 每次把取得的\(N\)的最後一位 變為\(ans\)的最後一位;
4.可以發現這種做法能巧妙地解決 前置零和中間零 的問題;
5.利用\(N=N/10\)將\(N\)的最後一位消去,直到\(N\)變為\(0\)為止;
6.最後記得判斷 是否有負數標記,依據標記的有無 輸出 \(-ans\) 或者 \(ans\);
P1307 C++ .cpp
#include<cstdio> //#include<stdio.h> using namespace std; int x,f,ans; int main(){ scanf("%d",&x); f=1; if(x<0){ f=-1; x=-x; } while(x>0){ ans=ans*10+x%10; x=x/10; } printf("%d",ans*f); return 0; }
P1307 Python.py
x=int(input());
f=1;
res=0;
if x<0:
f=-1;
x=-x;
while x>0:
res=res*10+x%10;
x=int(x/10);
print(x);
print(res*f);