1.HELLO UJSCODERS!
Description
输出“Hello UJScoders!”
Input
无
Output
输出“Hello UJScoders!”
Sample Input 1
无
Sample Output 1
Hello UJScoders!
题解
#include <iostream> using namespace std; int main() { cout<<"Hello UJScoders!"; return 0; }
2.西瓜好坏
Description
大一的期末考试考完后,还不能直接回家。因为还有课程设计要做。
潘老师和曹老师买了50000 5000050000个西瓜,只知道其中的十几个西瓜是否为好瓜,剩下的西瓜的好坏无法判断。于是,潘老师和曹老师就通过那十几个已知好坏的西瓜,让同学们研究出一套方案,去判断剩下的西瓜是否为好瓜。
社长当年爆肝7天,终于将这套方案研究了出来。如图所示:
Input
一个西瓜的纹理、密度值、触感
Output
“好瓜”或“坏瓜”
Sample Input 1
清晰 0.4 硬滑
Sample Output 1
好瓜
题解
#include<iostream> #include<string> #include<string.h> using namespace std; int main() { string a; double b; string c; cin >> a >> b >> c; if (strcmp(a.c_str(), "清晰")==0) { if (b <= 0.3185) cout << "坏瓜"; else cout << "好瓜"; } else if (strcmp(a.c_str(), "稍糊")==0) { if (strcmp(c.c_str(), "硬滑")==0) cout << "坏瓜"; else cout << "好瓜"; } else cout << "坏瓜"; }
3.A+B
Description
输入两个数A和B
输出它们的和A+B
Input
两个整数,A和B
Output
一个整数
Sample Input 1
1 1
Sample Output 1
2
Hint
人生苦短,我用python
题解
A,B = map(int, input().split()) C = A+B print(C)
4.荒岛求生
Description
小明流落荒岛。荒岛的原始人已经会铸造硬币了,但原始人使用的货币只有两种面额。
例如,原始人使用的硬币只有3元和5元两种面额。
小明在购买货物的时候,只能用这两种面额的硬币。有的时候,小明付账不能被找钱结清,比如小明要买4元钱或7元钱的货物。事实上,最大的不能找钱结清的商品价格就是7元。大于等于8元钱的货物都能被3元和5元的硬币凑出来。
问:如果原始人只用A元和B元两种面额的硬币,最大的不能找钱结清的商品价格是多少?
Input
两个正整数,A和B
Output
一个正整数,代表结果
Sample Input 1
3 5
Sample Output 1
7
题解
a, b = (input().split()) a = int(a) b = int(b) print(a*b-a-b)
5.筛选数字
Description
我们通过一种办法筛选数字,被剩下的数被称为“存活数”。
首先从1开始写出自然数1,2,3,4,5,6,....
1 11就是第一个“存活数”。
我们从2 22这个数开始。把所有序号能被2 22整除的项删除,数列变为:
1_3_5_7_9....
重新记序:
135791113151719 。这时,3为第2个“存活数”,然后把所有能被3整除的序号位置的数删去。删除的数是5,11,17,...
数列又有变化:
137913151921252731333739
此时7为第3个“存活数”,然后再删去序号位置能被7 77整除的(19,39,...)
最后剩下的数列类似:
1,3,7,9,13,15,21
Input
输入两个正整数mn, 用空格分开(m<n<1000∗1000)
Output
程序输出 位于m和n之间的存活数的个数(不包含m和n)。
Sample Input 1
120
Sample Output 1
5
题解
#include<iostream> #include<cstring> #include<cmath> using namespace std; const int MAXN = 100001; void rearrange(int* arr, int *arrdel,int &len) { int cur = 1; for (int i = 1; i <= len - 1; i++) { if (arrdel[i] == 0) { arr[cur] = arr[i]; cur++; } } len = cur; memset(arrdel, 0, MAXN); } int main() { int m, n; int sum=0; cin >> m >> n; int arr[MAXN]; int arrdel[MAXN]; int len = MAXN; for (int i = 0; i <= MAXN; i++) { arr[i] = i; arrdel[i] = 0; } for (int i = 0; i <= MAXN / 2; i++) { arrdel[2 * i] = 1; } rearrange(arr, arrdel, len); for(int loop=2;loop<=n;loop++){ int todel=arr[loop]; for (int i = 1; i <= MAXN / todel; i++) arrdel[todel * i] = 1; rearrange(arr, arrdel, len); } for(int i=1;i<MAXN;i++) if(m<arr[i]&&arr[i]<n) sum++; cout<<sum; }
6.逃离迷宫
Description
社长被困到了一个迷宫中。迷宫由n行m列的密室组成。
这些密室的编号就像矩阵的编号一样。如图所示
社长要逃离这个迷宫,就需要从左上角的(1,1)号密室,走到(n,m)号密室。
社长只能向右或者向下走。
注意,如果行号和列数都能被3 33整除,则有机关陷阱!!!不能走入这一格中!
问社长有多少种办法可以逃离迷宫。
Input
两个整数n和m
Output
一个整数,代表社长能逃离迷宫的方案数目。
Sample Input 1
2 3
Sample Output 1
3
#include<iostream> using namespace std; int main() { int n,m,map[100][100],i,j; cin>>n>>m; for (i=0;i<=n+1;i++) for (j=0;j<=m+1;j++) { if (i==0||j==0) { map[i][j]=-1;}else { if (i%3==0&&j%3==0) map[i][j]=-1; else map[i][j]=0; } } for (i=1;i<=n;i++) map[i][1]=1; for (i=1;i<=m;i++)map[1][i]=1; for (i=2;i<=n;i++) for (j=2;j<=m;j++) { if (map[i][j]!=-1) { if (map[i-1][j]>0&&map[i][j-1]>0) { map[i][j]=map[i-1][j]+map[i][j-1]; }else { map[i][j]=map[i-1][j]+map[i][j-1]+1; } } } if (n%3==0&&m%3==0)cout<<0;else cout<<map[n][m]; }
7.星际穿越
Description
小明发明了宇宙飞船,可以进行星际穿越。每次航程都会从一个虫洞跃迁到另一个虫洞。
宇宙的所有虫洞围成了一个大圆圈,虫洞总数为n,顺时针标序号为:0,1,2,......n−1,而宇宙飞船每次跃迁的距离为d。例如,小明能从第0个虫洞开始跃迁到第d个虫洞而不能跃迁到这两个虫洞之间的任一虫洞。因为虫洞围成了一个圈,所以小明也可以从n−1号虫洞跃迁到d−1号虫洞,从n−2号虫洞跃迁到d−2号虫洞,以此类推。
现在小明所在的虫洞记为x,而小明想去的虫洞在y。
小明要跃迁多少次才能到达目的地?
注意:小明只能在顺时针方向上跃迁。
Input
输入多组测试数据。
第一行是一个整数M,即:输入M组测试数据。
接下来M MM行,每行包括4 44个数。分别为虫洞总总数量n,跃迁的距离d,小明的初始位置x和小明的终点位置y。
Output
对于每组测试数据,输出一行,给出小明至少跃迁多少次才能到达目的地。
如果无论翻跃迁多少次也不能到达,输出 Impossible。
Sample Input 1
2
3 2 0 2
3 2 0 1
Sample Output 1
1
2
#include<iostream> using namespace std; long long exgcd(long long a, long long b, long long& x, long long& y) { if (b == 0) { x = 1; y = 0; return a; } long long d = exgcd(b, a % b, y, x); y -= a / b * x; return d; } int main() { int t; cin >> t; while (t--) { long long n, d, x, y,a,b; cin >> n >> d >> x >> y; long long gcd = exgcd(n, d, a, b); if ((y - x) % gcd != 0) { cout << "Impossible" << endl; continue; } b = b * (y - x) / gcd; n = n / gcd; cout << ((b % n) + n) % n<<endl; } return 0; }