问题 A: 子数整数
Description
对于一个五位数 a1a2a3a4a5,可将其拆分为三个子数: sub1=a1a2a3
sub2=a2a3a4
sub3=a3a4a5
例如,五位数 20207 可以拆分成 sub1=202
sub2=020(=20) sub3=207
现在给定一个正整数 K,要求你编程求出 10000(包括 10000)到 30000(包括 30000)之间所有满足下述条件的五位数,条件是这些五位数的三个子数 sub1,sub2,sub3 都可被 K 整除。
Input
从文件 num.in 输入,输入仅一行,为正整数 K(0
Output
输出到文件 num.out,输出文件的每一行为一个满足条件的五位数,要求从小到大输出。不得重复输出或遗漏。如果无解,则输出“-1”。
Sample Input
15
Sample Output
22555
25555
28555
30000
代码如下
#include <bits/stdc++.h>//12345 123 234 345
using namespace std;// c e f
long long n, ans;
int main() {
cin >> n;
for (int i = 10000; i <= 30000; i++) {
int a = i / 10000; //1
int b = i / 1000; //12
int c = i / 100; //123
int d = i / 10; //1234
int e = d - a * 1000; //234
int f = i - b * 1000 ;//345
if (c % n == 0 && e % n == 0 && f % n == 0) {
cout << i << endl;
ans++;
}
}
if (ans == 0)
cout << "-1";
return 0;
}
问题 B:游戏问题
【问题描述】
“五四”青年节到了,某学校要举行一个游园活动,其中有一个这样的游戏:n 个同学(编号从0 到n-1)围坐一圈,按照顺时针方向给n 个位置编号,从0 到n-1。最初,第0 号同学在第0 号位置,第1 号同学在第1 号位置,……,依此类推。
游戏规则如下:每一轮第0 号位置上的同学顺时针走到第m 号位置,第1 号位置同学走到第m+1 号位置,……,依此类推,第n −m号位置上的同学走到第0 号位置,第n-m+1 号位置上的同学走到第1 号位置,……,第n-1 号位置上的同学顺时针走到第m-1 号位置。
现在,一共进行了10^k 轮,请问x 号同学最