合工大OJ--PID1345--数7
来源:互联网 发布:鹿鼎记 知乎 编辑:程序博客网 时间:2024/06/06 15:03
题目大意:
本题大意是一堆小朋友玩酒桌游戏:所有人围一圈,编号1~n,从其中某个编号为a的小朋友开始说出一个合数b(非质数但不包括1,最小的合数为4),其中编号为m的小明比较
聪明。他想着,从b开始数,每次说完都加1,如果加1后为质数则此人敲桌子一下(duang),并且循环方向发生改变。直至轮到他自己,并输出小明应该Duang还是说出这个合
数。
我的思路:
在我看来,这道题有两点应该注意,第一:判断质数;第二:循环方向的改变。
源码:
#include <iostream>#include <cstdio>#include <cmath>using namespace std;//此函数用于判断质数 bool isSushu(int value){if(value == 1){return false;} int a = sqrt(value);for(int i = 2;i<=a;i++){if(value % i == 0){return false;}}return true;}int main(){int t;int n,m;int a,b;cin>>t;while(t-- != 0){cin>>n>>m;//n代表总共人数 m代表小明的序号 cin>>a>>b;//a代表开始人的序号,b代表他所说的数字 bool f = false;//小明已经说过则为true,否则为false int result = b;int flag = 1;//用作循环方向的标记 ,默认正向循环 while(!f){//只要还没有轮到小明就一直循环下去...... if(a == (n+1)){//如果轮了一圈了则返回到第一个人 a = 1;}if(isSushu(result)){//碰到质数,循环方向发生改变 flag = -flag;}if(a == m){//判断是否轮到小明 if(isSushu(result)){//轮到小明时是否为素数 cout<<"duang"<<endl;}else{cout<<result<<endl;}f = true;}if(flag == -1){//反向循环 a--;}else{//正向循环 a++;}result ++;//要判断的数要持续加 1 }}}
阅读全文
0 0
- 合工大OJ--PID1345--数7
- oj-7-c-百位数求解
- OJ---数塔
- fjnu OJ 数鸭子
- ACdream OJ 完美数
- [OJ]同构数
- OJ 删数问题
- 【华为oj】自守数
- 南阳OJ~~水仙花数
- UESTC OJ Windy 数
- oj 1026 丑数
- OJ---完全数计算
- 【华为 OJ 】自守数
- OJ--------自守数
- 【华为OJ】自守数
- 优越数 (sdut oj)
- 平方数 (sdut oj)
- 水仙花数 (sdut oj)
- Kotlin语法基础,包引入
- MATLAB数学实践与建模
- 洛谷 P1032 字串变换
- 互联网大厂校招前端面试考点分享,你能答到第几题?
- flask 关于 db.create_all() 报错
- 合工大OJ--PID1345--数7
- Java的根类Object
- 移动硬盘无法被电脑识别
- 新闻客户端
- window下安装solr到tomcat中
- 网络——代理服务器和NAT技术
- Swift4学习笔记3——String和Character
- Three.js 蒙皮动画源码分析图(留坑)
- 面向对象思想