美文网首页
网易相反数问题

网易相反数问题

作者: 欧德朗 | 来源:发表于2018-10-10 16:53 被阅读0次

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

    #include <iostream>
    #include <string>
    #include <bits/stdc++.h>
    using namespace std;
    int main()
    {   
        int a;
        cin >> a;
        string temp;
        char arr[10^5];
        sprintf(arr,"%d",a);
        string str(arr);
        //cout << str <<endl;
        int len = str.size();
        for(int i = 0; i < len ;i++)
        {
            if(arr[i] == '+' || arr[i] == '-')
                temp = arr[i];
            else
                if(arr[0] == '+' || arr[0] == '-')
                temp += arr[len-i]; 
                else
                temp += arr[len-i-1];           
        } 
        //cout<< temp <<endl;
        int b = stoi(temp);
        //cout << b <<endl;
        cout << b + a <<endl;   
        return 0;
    }
    

    ps:值得注意的是stoi这个函数可以把 字符串转换成整形,同时去掉000xx,前面这些000,同时可以用于解决金山那个带符号反转数的问题,同样, 可以使用 stol(long), stof(float), stod(double) 等.

    相关文章

      网友评论

          本文标题:网易相反数问题

          本文链接:https://www.haomeiwen.com/subject/sifmaftx.html