H.数7(模拟)

1212: H.数7

时间限制: 1 Sec  内存限制: 64 MB 提交: 8  解决: 5

标签提交统计讨论版

题目描述

数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…一直到某人出现错误为止。小明想知道轮到自己的时候应该干什么,你能够帮小明解决这个问题吗?

输入

首先是一个整数T,表示有T组测试数据,接下来每组数据的第一行会给出n和m(1<=n<=10, 1<=m<=n),分别表示饭桌上有n个人,小明的编号是m,第二行会给出a和b(1<=a<=n, 1<=b<=10000),分别表示从编号为a的人开始,并且选择合数b开始数数。

输出

输出轮到小明的时候他应该干什么,如果是说数字就把该数字输出,如果是敲桌子就输出“duang”,每个输出单独占一行

样例输入

3

10 2

3 4

3 3

2 6

4 1

3 8

样例输出

duang
duang
10

 1 # include <iostream>
 2 # include <cstdio>
 3 # include <cstring>
 4 # include <algorithm>
 5 # include <cmath>
 6 using namespace std;
 7 bool _isprime(int k)
 8 {
 9     int i;
10     for(i=2;i<=sqrt(k);i++)
11     {
12         if(k%i==0)
13             return false;
14     }
15     return true;
16 }
17 int main()
18 {
19     int i,j,k,T,n,m,a,b;
20     //freopen("in.txt","r",stdin);
21     cin>>T;
22     while(T--)
23     {
24         int next,flag=0;
25         k=0;
26         cin>>n>>m>>a>>b;
27         next=a%n+1;
28         if(m==a)
29         {
30             cout<<b<<endl;
31             continue;
32         }
33         while(next!=m)
34         {
35             if(!flag)
36             {
37                 if(_isprime(++b))
38                 {
39                     flag=1;
40                     if(next==1)
41                         next=n;
42                     else
43                         next=next-1;
44                 }
45                 else
46                     next=next%n+1;
47             }
48             else
49             {
50                 if(_isprime(++b))
51                 {
52                     flag=0;
53                     next=next%n+1;
54                 }
55                 else
56                 {
57                     if(next==1)
58                         next=n;
59                     else
60                         next=next-1;
61                 }
62             }
63         }
64         if(_isprime(++b))
65             cout<<"duang"<<endl;
66         else
67             cout<<b<<endl;
68
69     }
70 }
时间: 2024-08-19 05:21:18

H.数7(模拟)的相关文章

ACM-ICPC 2014北京邀请赛 H Happy Reverse [模拟]

题意:给出n个二进制串,可以把其中的一些0和1反转(即0变1,1变0),找出转化后n个串中的最大值和最小值的差值. 分析:思路就是把所有的串和反转的存在一个数组中,然后排序,找最大值和最小值的差,(如果是同一个串反转的就找第二大的和最小的或第二小和最大的中的最大值).注意假如只有一个串的话结果为0 DEBUG: 这题写了好久 1.第一次用vim,很爽,但是还没熟练 2.忽视了这题的范围,显然要用longlong 3.用了longlong后还WA,用脚本跑出来数据发现在longlong下,min的

897B. Chtholly&#39;s request#长度为偶数的回文数(模拟)

题目出处:http://codeforces.com/problemset/problem/897/B 题目大意:构造一个题意要求的zcy数之后取模 #include<iostream> using namespace std; int main(){ int n,m; __int64 g,t,sum=0; cin>>n>>m; //关键在于zcy数的构造 //注意到要求长度是偶数 //考虑回文构造 for(int i=1;i<=n;i++){ g=i; t=i;

2019合工大超越五套卷数一全五套+数三模拟一PDF

资源链接:https://pan.baidu.com/s/1HU4UJKnL87qWnkcFu8JWBg合工大超越考研数学模拟卷数一全五套PDF以及数三模拟一PDF,分享给大家!超越模拟卷较共创模拟卷偏难,考研数学重基础,量力而行.如下: 原文地址:http://blog.51cto.com/14093933/2325480

题解 P1748 【H数】

我来讲讲 \(dp\) 的做法 前言 昨天 \(PHY\) 大佬问我,这题怎么做?考虑到他没学过 \(set\) . \(priority_queue\) 和 \(queue\) .之后,我就想到了可以用 \(dp\) 来解决这道题. 正文 设置状态 很显然,我们可以用 \(f[i]\) 表示第\(i\)个数是多少. 转移 第\(i\)个\(H\)数是多少,我们显然应该从前面的\(i-1\)个数去分别\(\times2\).\(\times3\).\(\times5\).\(\times7\)中

NOJ1113 斐波那契数应用 模拟

题目描述 知道斐波那契数吗?下面是它的一个定义: F1 = 1 F2 = 2 Fn+1 = Fn+Fn-1 ,这里n>1 每个正整数x 可写为不同斐波那契数的总和,因而意味着存在数k 和数 b1, b2, -, bk,使得x=b1*F1+ -+ bi*Fi+ - +bk*Fk, 其中bk = 1,bi (1≤i < k)为0或1.简言之,我们可写为: b(x) = (bk, bk-1, -, b1). 为使表示唯一,我们要求对所有i > 1,bi * bi-1 = 0. 利用斐波那契数,

2019合工大共创五套卷(数一数二数三)模拟卷一+答案PDF

资源链接:https://pan.baidu.com/s/1SVQJDfXmVt6u0xJhFPgC3Q合工大共创考研数学模拟卷,冲刺复习经典必备.数学1和3都是每年五套题,数学2每年只有三套题.现更新数一数二数三的模拟卷一,分享给大家!如下: 原文地址:http://blog.51cto.com/14093933/2325032

P1748 H数 题解

原题链接 简要题意: 求第 \(k\) 个质因子只包含 \(2,3,5,7\) 的数.规定 \(1\) 是第一个这样的数. 显然,本题可以用数组实现,用四个指针,将最小的往前进一发. 但是,有 \(\texttt{STL}\) 和 这么弱的数据,我们还需要维护什么? 你发现,需要去重和排序.这不就是 \(\text{set}\) 的标本? 每次取出 \(\text{set}\) 第一个元素 \(x\),并将 \(x \times 2,3,5,7\) 均重新插入集合,同时将答案指针往后移一位. 最

2015安徽省赛 H.数7

http://xcacm.hfut.edu.cn/problem.php?id=1212 模拟大发 #include<iostream> #include<cstdio> #include<cstring> #include<cmath> using namespace std; bool judge_prime(int k) { int i; int u=int(sqrt(k*1.0)); for(i=2;i<=u;i++) { if(k%i==0)

出现次数最多的数-CCF模拟

问题描述 给定n个正整数,找出它们中出现次数最多的数.如果这样的数有多个,请输出其中最小的一个. 输入格式 输入的第一行只有一个正整数n(1 ≤ n ≤ 1000),表示数字的个数. 输入的第二行有n个整数s1, s2, …, sn (1 ≤ si ≤ 10000, 1 ≤ i ≤ n).相邻的数用空格分隔. 输出格式 输出这n个次数中出现次数最多的数.如果这样的数有多个,输出其中最小的一个. 样例输入 6 10 1 10 20 30 20 样例输出 10 #include <iostream>