前言
哈哈哈,决定9月份考一下CCF认证,不知道能考50分还是100分,开始练习啦。
题目要求
问题分析
题目中说了不计入被跳过的数,也就是虽然你要报n个数,但是你最后报的数一定是大于等于n的。比如题目说明n小于等于666,但加上跳过的数字,其实报的数已经超过了700。所以我们需要考虑到百位甚至千位为7的情况。
Java代码
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
int n;
n = scanner.nextInt();
scanner.close();
int[] arr = new int[5]; //用来记录四个人跳过的次数
for(int i=0; i<arr.length; i++) { //初始化为0
arr[i] = 0;
}
for (int i = 1,flag=0; flag <n; i++) { //flag记录有效报数,即没有跳过的个数
if(ContainSeven(i)) { //如果跳过
arr[i%4]++;
}
else { //如果不跳过,那么有效报数次数加一
flag++;
}
}
for (int i = 1; i <= 3; i++) { //打印甲乙丙丁
System.out.println(arr[i]);
}
System.out.println(arr[0]);
}
public static Boolean ContainSeven(int num){ //判断是否需要跳过函数,参数为当前数字
if(num%7==0)
return true;
else{
int t=num;
while(t>0)
{
if(t%10==7)//含有数字7
return true;
t/=10;
}
}
return false;
}
}