进位模拟数位拆分和最大公约数最小公倍数

发布时间:2023年12月31日

一、进位模拟与数位拆分

1、A+B

100以内的A + B问题

题目描述:

小明只认识100以内的正整数,如果大于100的正整数,他只会拿这个数的后两位做运算。

输入

每行两个整数分别为A和B,中间以空格分开,数据有多组。

输出

输出小明做完A + B之后的结果。

public class Test{
    public static void main(String[] args){
        int a = 0,b = 0;
        Scanner sc = new Scanner(System.in);
        while(sc.hasNext()){
            a = sc.nextInt();
            b = sc.nextInt();
            System.out.println(((a % 100) + (b % 100))%100);
        }
    }
}

在要拆分一个数时或是获取一个数的个位一般都是用%,将一个数进行拆分。

2、计算有多少次进位

题目描述
输入两个n位的正整数A、B(n≤9),计算A+B过程中有多少次进位。
输入
每行两个整数分别为A和B,中间以空格分开,数据有多组。
输出
输出A+B计算过程中的进位次数。

public class jinwei {
	public static void main(String[] args) {
		Scanner sc = new Scanner(System.in);
		int a = 0,b = 0;
		while(sc.hasNext()) {
			a = sc.nextInt();
			b = sc.nextInt();
			int count = 0,jw = 0;
			for(int i = 0;i <= 9;i ++) {
				jw = (a % 10 + b % 10 + jw) >= 10 ? 1 : 0;
				count += jw;
				a /= 10;
				b /= 10;
			}
			System.out.println(count);
		}
	}
}

灵活运用三目运算,将小学学的加法进位运算进行模拟,若是一下不知道怎么运算就一部部拆分。

3、数位反转

public static void main(String[] args){
	Scanner sc = new Scanner(System.in);
	while(sc.hasNext()){
		int n = sc.nextInt();
		int sum = 0;
		while(n > 0){
			sum = sum * 10 + n % 10;
			n = n / 10;
		}
		System.out.println(sum);
        
        
        //运用String方法
        ——————
        System.out.println(new StringBuilder(String.valueOf(n).reverse().toString());//没考虑 520情况
	}
}

二、最大公约数与最小公倍数?

1、最大公约数

一个长为a,宽为b的广场,现在要给该广场铺上一层瓷砖,瓷砖必须是正方形的,问你瓷砖最大边长为多少?

public class Gcd {
	public static void main(String[] args) {
		Scanner sc = new Scanner(System.in);
		int a = 0,b = 0;
		while(sc.hasNext()) {
			a = sc.nextInt();
			b = sc.nextInt();
			System.out.println(gcd(a,b));
		}
	}
	public static int gcd(int a,int b) {
		return b == 0? a:gcd(b,a%b);
	}
	public static int gcd1(int a,int b) {
		while(b > 0) {
			int temp = a % b;
			a = b;
			b = temp;
		}
		return a;
	}

}

2、最小公倍数

lcm(a,b) = (a*b) / gcd(a,b)

public class Lcm {
	public static void main(String[] args) {
		Scanner sc = new Scanner(System.in);
		int a = 0,b = 0;
		while(sc.hasNext()) {
			a = sc.nextInt();
			b = sc.nextInt();
			System.out.println(lcm(a,b));
		}
	}
	public static int lcm(int a,int b) {
		return (a * b) / gcd(a,b);
	}
	public static int gcd(int a,int b) {
		return b == 0? a : gcd(b,a%b);
	}

}

文章来源:https://blog.csdn.net/woai3364/article/details/134339804
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。