首页 > 试题广场 >

相反数

[编程题]相反数
  • 热度指数:166 时间限制:C/C++ 1秒,其他语言2秒 空间限制:C/C++ 32M,其他语言64M
  • 算法知识视频讲解
为了得到一个数的"相反数",我们将这个数的数字顺序颠倒,然后再加上原先的数得到"相反数"。例如,为了得到1325的"相反数",首先我们将该数的数字顺序颠倒,我们得到5231,之后再加上原先的数,我们得到5231+1325=6556.如果颠倒之后的数字有前缀零,前缀零将会被忽略。例如n = 100, 颠倒之后是1.

输入描述:
输入包括一个整数n,(1 ≤ n ≤ 10^5)


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

输入

1325

输出

6556
import java.util.Scanner;

/**
 * @author yanglaiyi
 * @title: 相反数
 * @projectName 牛课刷题之栈
 * @description: TODO
 * @date 2020/4/15 9:10
 */
public class 相反数 {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        int anInt = sc.nextInt();

        StringBuffer sb = new StringBuffer(String.valueOf(anInt));
        sb.reverse();//反转字符串

        String s = sb.toString();
        s=s.replaceAll("\\b(0)\\1", "");//去掉前缀的0
        //直接Integer.valueOf(sb).intValue()是更好的操作
        System.out.println(Integer.valueOf(s).intValue()+anInt);//得到结果


    }


}

发表于 2020-04-15 09:25:54 回复(0)
我的方法就是string类的应用。
就是要先把反转后的前导0去掉。
另外补充一下 string转int的方法是 stoi()嘻嘻,偷懒啦
#include<cstdio>
(802)#include<cstring>
#include<string>
(765)#include<iostream>
#include<algorithm>
using namespace std;
int main(){
    string in;
    cin>>in;
    int i=in.length()-1,a;
    a = stoi(in);
    while(in[i]=='0'){i--;}
    in = in.substr(0,i+1);
    reverse(in.begin(),in.end());
    printf("%d\n",a+stoi(in));
}



发表于 2020-03-05 20:19:47 回复(0)
#include <iostream>
using namespace std;
int main(){
    int n1, n2, r, t;
    while(cin>>n1){
        t = n1;
        n2 = 0;
       while(t){
           r = t%10;
           t /= 10;
           n2 = n2*10 + r;
       }
       cout<<n2+n1;
    }
    
    return 0;

}

发表于 2020-02-21 22:55:35 回复(0)
将获取到的数字,转换成字符串类型,然后反转字符串,在将反转后的字符串转换成数字,和原来的数字相加就可以了
public class Demo {

    public static void main(String[] args) {

        Scanner sc= new Scanner(System.in);
        int num =sc.nextInt();

        int i = reverseSum2(num);
        System.out.println(i);
    }

    public  static int reverseSum1(int num){
        // 讲获取的num转换成字符串
        String s=""+num;
        // 定义一个反转后的字符串为:""
        String str="";
        // 倒着遍历转换后的字符串
        for (int i = s.length()-1 ; i >= 0; i--) {
            // 获取当前字符
            char c =s.charAt(i);
            // 将字符加到字符串上
            str=str+c;
        }
        // 将获得反转后的字符串转换成数字
        int num1 = Integer.parseInt(str);
        // 获取之和
        int sum=num+num1;
        return sum;
    }

    public  static int reverseSum2(int num){
        // 获取的num转换成字符串
        String s=num+"";
        StringBuffer str = new StringBuffer(s);
        // 反转字符串
        str.reverse();
        String s1=new String(str);
        int num1 = Integer.parseInt(s1);
        // 获取之和
        int sum=num+num1;
        return sum;
    }
}



编辑于 2019-11-23 22:01:46 回复(0)