hfut1345-数7
来源:互联网 发布:阿里云部署网站 编辑:程序博客网 时间:2024/06/14 04:57
http://acm.hfut.edu.cn/OnlineJudge/ PID=1345 数7
题目:
由数7游戏规则改编:先从任意一人开始数数,1、2、3……那样数下去,逢到7的倍数(7、14、21……)和含有7的数字(17、27……)必须以敲桌子代替。如果有谁逢7却数出来了,就要接受惩罚。小明觉得这个游戏太简单了,于是对它做出了改进,那就是每逢到素数的时候就以敲桌子代替,并且数数的方向发生改变,而且最开始的那个人可以从1到10000中选一个合数,开始数数。假设现在有10个人,第一个人的编号为1,他选择4开始数,由于4不是素数,那么就是1说:4,轮到下一个编号为2的人来数,由于5是素数,2敲桌子(duang),由于5是素数,顺序发生变化,现在又轮到1说:6,然后以此类推10敲桌子(duang),1说:8,2说:9…一直到某人出现错误为止。求解小明(第一次)需要进行的操作。
题解:
由题目可知,需要求小明的(第一次)操作,故而可以以编号进行模拟过程,直到编号到达小明的编号。过程中注意三点:判断素数;数数方向;编号变动(即判断好下一次编号是几)
代码(C++):
#include <bits/stdc++.h>using namespace std;bool isP(int x){ //判断素数函数 for(int i=2;i<=sqrt(x);i++) if(x%i==0) return false; return true;}int main(){ int T; cin>>T; while(T--){ int n,m,a,b; cin>>n>>m>>a>>b; bool way=true; //标记数数方向 int t=a; //以a为起始值进行递增 while(t!=m){ if(isP(b++)) //素数判断,改变方向 way=!way; if(way) t = t%n+1; else t = (t+n-1)%n; } if(isP(b)) cout<<"duang"<<endl; else cout<<b<<endl; } return 0;}运行结果:ResultAcceptedMemory244KBTime0MSLanguageG++Code Length587B
阅读全文
1 0
- hfut1345-数7
- 数7
- 7-3. 数素数
- 数 7 打表
- 作业一 数7
- 7-3 水仙花数
- 数
- 数
- 数
- 数
- 数
- 数
- 与7无关的数
- 个人理财7要数
- 第十二周-回文数7
- 与7无关的数
- 7-3. 数素数 (20)
- 7-3. 数素数 (20)
- 离散题目16(自反闭包)
- Android之WebView
- 《数据结构学习与实验指导》3-3:银行业务队列简单模拟
- PAT.1038.统计同成绩学生
- Linux下的死锁
- hfut1345-数7
- Tensorflow-3-使用RNN生成中文小说
- css的文字line-height兼容问题
- c/c++整理--c++面向对象(3)
- 淘淘商城系列——搭建商品详情页面展示工程
- eclipse快捷键使用
- Java并发编程之volatile解析
- redis 与分布式锁
- 微信支付错误,页面URL末注册