(网易2018校招笔试)[编程题] 相反数

来源:互联网 发布:c语言中#的效果 编辑:程序博客网 时间:2024/05/16 13:45

题目:

为了得到一个数的"相反数",我们将这个数的数字顺序颠倒,然后再加上原先的数得到"相反数"。例如,为了得到1325的"相反数",首先我们将该数的数字顺序颠倒,我们得到5231,之后再加上原先的数,我们得到5231+1325=6556.如果颠倒之后的数字有前缀零,前缀零将会被忽略。例如n = 100, 颠倒之后是1. 
输入描述:
输入包括一个整数n,(1 ≤ n ≤ 10^5)


输出描述:
输出一个整数,表示n的相反数

输入例子1:
1325

输出例子1:
6556

代码:

[cpp] view plain copy
 print?
  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. }  


分析:

这个题目还是比较简单的,字符型和数字的转换

看了一下大佬的代码,深受打击
[cpp] view plain copy
 print?
  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

原创粉丝点击