弹指间计算机协会 2021“码拉松”程序设计竞赛

编程入门 行业动态 更新时间:2024-10-09 22:19:38

弹指间计算机协会 2021“码拉松”<a href=https://www.elefans.com/category/jswz/34/1771020.html style=程序设计竞赛"/>

弹指间计算机协会 2021“码拉松”程序设计竞赛

目录

  • 1.HELLO UJSCODERS!
  • 2.西瓜好坏
  • 3.A+B
  • 4.荒岛求生
  • 5.筛选数字
  • 6.逃离迷宫
  • 7.星际穿越

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 50000 50000个西瓜,只知道其中的十几个西瓜是否为好瓜,剩下的西瓜的好坏无法判断。于是,潘老师和曹老师就通过那十几个已知好坏的西瓜,让同学们研究出一套方案,去判断剩下的西瓜是否为好瓜。

社长当年爆肝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 << "坏瓜";elsecout << "好瓜";}else if (strcmp(a.c_str(), "稍糊")==0){if (strcmp(c.c_str(), "硬滑")==0)cout << "坏瓜";elsecout << "好瓜";}elsecout << "坏瓜";
}

3.A+B

Description
输入两个数 A A A和 B B B
输出它们的和 A + B A+B A+B

Input
两个整数, A A A和 B B 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 1开始写出自然数 1 , 2 , 3 , 4 , 5 , 6 , . . . . 1,2,3,4,5,6,.... 1,2,3,4,5,6,....
1 1 1就是第一个“存活数”。
我们从 2 2 2这个数开始。把所有序号能被 2 2 2整除的项删除,数列变为:
1 _ 3 _ 5 _ 7 _ 9.... 1 \_ 3 \_ 5 \_ 7 \_ 9 .... 1_3_5_7_9....
重新记序:
135791113151719 1 3 5 7 9 11 13 15 17 19 135791113151719 。这时,3为第2个“存活数”,然后把所有能被3整除的序号位置的数删去。删除的数是 5 , 11 , 17 , . . . 5,11, 17, ... 5,11,17,...
数列又有变化:
137913151921252731333739 1 3 7 9 13 15 19 21 25 27 31 33 37 39 137913151921252731333739
此时 7 7 7为第 3 3 3个“存活数”,然后再删去序号位置能被 7 7 7整除的 ( 19 , 39 , . . . ) (19,39,...) (19,39,...)
最后剩下的数列类似:
1 , 3 , 7 , 9 , 13 , 15 , 21 1, 3, 7, 9, 13, 15, 21 1,3,7,9,13,15,21

Input
输入两个正整数 m n m n mn, 用空格分开 ( m < n < 1000 ∗ 1000 ) (m < n < 1000*1000) (m<n<1000∗1000)

Output
程序输出 位于 m m m和 n n n之间的存活数的个数(不包含 m m m和 n n n)。

Sample Input 1
120 1 20 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 n n行 m m m列的密室组成。
这些密室的编号就像矩阵的编号一样。如图所示
社长要逃离这个迷宫,就需要从左上角的 ( 1 , 1 ) (1,1) (1,1)号密室,走到 ( n , m ) (n,m) (n,m)号密室。

社长只能向右或者向下走。
注意,如果行号和列数都能被 3 3 3整除,则有机关陷阱!!!不能走入这一格中!
问社长有多少种办法可以逃离迷宫。

Input
两个整数 n n n和 m m 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;elsemap[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 n n,顺时针标序号为: 0 , 1 , 2 , . . . . . . n − 1 0,1,2,......n-1 0,1,2,......n−1,而宇宙飞船每次跃迁的距离为 d d d。例如,小明能从第 0 0 0个虫洞开始跃迁到第 d d d个虫洞而不能跃迁到这两个虫洞之间的任一虫洞。因为虫洞围成了一个圈,所以小明也可以从 n − 1 n-1 n−1号虫洞跃迁到 d − 1 d-1 d−1号虫洞,从 n − 2 n-2 n−2号虫洞跃迁到 d − 2 d-2 d−2号虫洞,以此类推。
现在小明所在的虫洞记为 x x x,而小明想去的虫洞在 y y y。
小明要跃迁多少次才能到达目的地?
注意:小明只能在顺时针方向上跃迁。

Input
输入多组测试数据。
第一行是一个整数 M M M,即:输入 M M M组测试数据。
接下来 M M M行,每行包括 4 4 4个数。分别为虫洞总总数量 n n n,跃迁的距离 d d d,小明的初始位置 x x x和小明的终点位置 y y 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;
}

更多推荐

弹指间计算机协会 2021“码拉松”程序设计竞赛

本文发布于:2024-02-19 19:36:00,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/jswz/34/1765638.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:程序设计   协会   计算机   弹指间   码拉松

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!