MT2025 工厂

 1.题目

有一家工厂,在一天的开始时,共有x瓶罐头,在这一天结束时,会生产x mod m瓶罐头。

现在已知第一天所拥有的罐头数a,以及m的值。请问,是否存在一个时刻,整个工厂会停止生产(x mod m = 0)?

格式

输入格式:

两个数a,m。

输出格式:

当生产会停止时,输出Yes,否则输出No

样例 1

输入:

1 5

输出:

No
备注

其中:1≤a,m≤1e5。

本题相关知识点: 算法基础:模拟

题目来源:码蹄集

2.思路及代码

这个题目有两种解法。

第一种是直接暴力模拟,当循环达到一定次数还没出现x mod m = 0,即可认定不会停止生产。

代码如下:

import java.util.Scanner;
import java.util.*;class Main {public static void main(String[] args) {Scanner input = new Scanner(System.in);boolean flag = true;int x = input.nextInt(), m = input.nextInt();x %= m;for (int i = 0; i < 1e5; ++i) {x %= m;x *= 2;if (x == 0) {flag = false; break;}   }if (flag) {System.out.println("No");} else {System.out.println("Yes");}input.close();}
}

第二种是创建一个长度为m的数组,每个数字出现的时候就进行标记,当一个数字第二次出现的时候,则可认为已经进入循环。

import java.util.Scanner;
import java.util.*;class Main {public static void main(String[] args) {Scanner input = new Scanner(System.in);int x = input.nextInt(), m = input.nextInt();boolean[] arr = new boolean[m];while(true) {x *= 2;x %= m;if (x == 0) {System.out.print("Yes");break;} else if (arr[x]){System.out.print("No");break;}arr[x] = true;}}
}


本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场,不承担相关法律责任。如若转载,请注明出处。 如若内容造成侵权/违法违规/事实不符,请点击【内容举报】进行投诉反馈!

相关文章

立即
投稿

微信公众账号

微信扫一扫加关注

返回
顶部