(網易2018校招筆試)[程式設計題] 相反數

Roninwz發表於2017-10-10

題目:

為了得到一個數的"相反數",我們將這個數的數字順序顛倒,然後再加上原先的數得到"相反數"。例如,為了得到1325的"相反數",首先我們將該數的數字順序顛倒,我們得到5231,之後再加上原先的數,我們得到5231+1325=6556.如果顛倒之後的數字有字首零,字首零將會被忽略。例如n = 100, 顛倒之後是1. 
輸入描述:
輸入包括一個整數n,(1 ≤ n ≤ 10^5)


輸出描述:
輸出一個整數,表示n的相反數

輸入例子1:
1325

輸出例子1:
6556

程式碼:

  1. #include<iostream>  
  2. #include<string>  
  3. using namespace std;  
  4. char nums[10]={'0','1','2','3','4','5','6','7','8','9'};  
  5.   
  6. int oppsite(int num){  
  7.     int data=num;  
  8.     int temp=num;  
  9.     string s="";  
  10.     while(num!=0){  
  11.         temp=num%10;  
  12.         s=s+nums[temp];  
  13.         num/=10;  
  14.     }  
  15.     bool flag=true;  
  16.     temp=0;  
  17.     for(int i=0;i<s.size();i++){  
  18.         if(s[i]!='0'&&flag==true)  
  19.             flag=false;  
  20.         if(s[i]!='0'||flag==false){  
  21.             temp=temp*10+(s[i]-'0');  
  22.         }  
  23.     }  
  24.     temp=temp+data;  
  25.     return temp;  
  26. }  
  27.   
  28. int main(){  
  29.     int num;  
  30.     cin>>num;  
  31.     cout<<oppsite(num);  
  32. }  


分析:

這個題目還是比較簡單的,字元型和數字的轉換

看了一下大佬的程式碼,深受打擊
  1. 作者:雨baby  
  2. 連結:https://www.nowcoder.com/discuss/39219  
  3. 來源:牛客網  
  4.   
  5. using namespace std;  
  6.    
  7. int n;  
  8. int main() {  
  9.     cin >> n;  
  10.     int cn = 0;  
  11.     int x = n;  
  12.     while(x) {  
  13.         cn = cn * 10 + x % 10;  
  14.         x /= 10;  
  15.     }  
  16.     cout << n + cn << endl;  
  17.     return 0;  

  1. }  

轉載來自:http://blog.csdn.net/gcola007/article/details/77922749

相關文章