CCF准备日记——201912-1

CCF准备日记——201912-1


题目编号:201912-1
题目名称:稀疏向量
使用语言:Java(Eclipese)
题目描述

在这里插入图片描述
在这里插入图片描述
我的代码

import java.util.Scanner;

public class Main {

	public static void main(String[] args) {
		// TODO Auto-generated method stub
		Scanner scanner = new Scanner(System.in);
		int n = scanner.nextInt();//总共报的数字
		int[] numJump = new int[4];//每人跳过的数字
		int curNum = 1;//当前数字
		while(n>0) {
			if(curNum%7==0 || ((Integer.toString(curNum)).indexOf("7"))!=-1) {//如果是7有关的
				numJump[(curNum-1)%4] += 1;
				curNum++;
			}else {
				curNum++;
				n--;
			}
		}
		System.out.println(numJump[0]);
		System.out.println(numJump[1]);
		System.out.println(numJump[2]);
		System.out.println(numJump[3]);
	}
}

我的分析

  • 这道题目的难度很小,只用了不到30行代码一次提交便通过了。思路非常简单实现起来也没有复杂的地方,但有两个小难点需要经过一定的思考。
  • 第一个小难点是如何判定当前数字curNum与7有关,也就是该数字是7的倍数或者包含7这个数字。7的倍数很好判定只需要用取模运算%即可。而包含7这个数字就无法用数值计算的方法判定,我的思路是将其转换成字符串,然后调用indexOf函数,如果字符串中不包含indexOf函数的输入,函数是会返回-1,因此可以根据这个方法来判定是否包含7这个数字。
  • 第二个小难点在于如何轮流让甲乙丙丁报数,也就是说如何构建当前数字与甲乙丙丁的对应关系,方便统计各自跳过的个数。实现方法也很简单只需要对4取余即可。但需要注意的是需要对curNum-1之后再对4取余,因为数组的下标是从0开始的。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值