给你一个正整数 n ,开始时,它放在桌面上。在 109 天内,每天都要执行下述步骤:
对于出现在桌面上的每个数字 x ,找出符合 1 <= i <= n 且满足 x % i == 1 的所有数字 i 。
然后,将这些数字放在桌面上。
返回在 109 天之后,出现在桌面上的 不同 整数的数目。
注意:
一旦数字放在桌面上,则会一直保留直到结束。
% 表示取余运算。例如,14 % 3 等于 2 。
示例 1:
输入:n = 5
输出:4
解释:最开始,5 在桌面上。
第二天,2 和 4 也出现在桌面上,因为 5 % 2 == 1 且 5 % 4 == 1 。
再过一天 3 也出现在桌面上,因为 4 % 3 == 1 。
在十亿天结束时,桌面上的不同数字有 2 、3 、4 、5 。
示例 2:
输入:n = 3
输出:2
解释:
因为 3 % 2 == 1 ,2 也出现在桌面上。
在十亿天结束时,桌面上的不同数字只有两个:2 和 3 。
来源:力扣(LeetCode)
链接:https://leetcode.cn/problems/count-distinct-numbers-on-board
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。
class Solution {
public int distinctIntegers(int n) {
int count = 0;
//记录桌面上出现的数字
int[] number = new int[105];
//先记录桌面上的初始数字
number[n] = 1;
count++;
while(true){
//代表是否进行数组更新
int flag = 0;
for(int i=2;i<=n;i++){
for(int j=0;j<=100;j++){
//被除数必须存在
if(number[j]==1){
//找到符合n%x==1的数字,并且没纪录过
if(j%i==1&&number[i]==0){
count++;
number[i]=1;
flag = 1;
}
}
}
}
//返回计数器
if(flag==0) break;
}
return count;
}
}
标签:count,数字,示例,int,109,桌面上,统计
From: https://www.cnblogs.com/xiaochaofang/p/17432691.html