C++蓝桥杯2023.10:翻转游戏币

文章描述了一个编程问题,即给定一定数量的游戏币,按照特定规则翻转后计算正面朝上的数量。通过C++代码实现,利用for循环和模运算判断每个游戏币的状态变化。
摘要由CSDN通过智能技术生成

编程实现:翻转游戏币
题目描述
桌面上有n枚游戏币,均为反面朝上,编号依次为1到n。有n个人(游戏币的数量与人的数量相等),首先第1个人将所有游戏币翻转,然后第2个人将所有编号是2的倍数的游戏币翻转,接下来第3个人将所有编号是3的倍数的游戏币翻转......以此类推,当最后一个人完成操作后,还有多少枚游戏币正面朝上?
例如:n-4;
最初4枚游戏币的状态为: 反反反反:
经过第1个人翻转后,游戏币的状态为:正正正正;经过第2个人翻转后,游戏币的状态为:正反正反:经过第3个人翻转后,游戏币的状态为:正反反反:经过第4个人翻转后,游戏币的状态为:正反反正:最后,还有两枚游戏币正面朝上,故答案为2。
输入描述
输入一个正整数n(3<=n<=109),表示游戏币数量及人的数量

输出描述
输出一个整数,表示最终游戏币正面朝上的数量
样例输入:

4

样例输出:

2

#include<bits/stdc++.h>
using namespace std;
int main(){
	int n;
	cin>>n;
	int a[n+1]={};
	for(int i=1;i<=n;i++){
		for(int j=1;j<=n;j++){
			if(j%i==0){
				if(a[i]==1){
					a[i]--;
				}else{
					a[i]++;
				}
			}
		}
	}
	int s=0;
	for(int i=1;i<=n;i++){
		if(a[i]==1){
			s++;
		}
	}
	cout<<s;
	return 0;
}

  • 7
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值