1. 程式人生 > 實用技巧 >HelloWorld的新寫法 in C

HelloWorld的新寫法 in C

時間限制 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);