不爱生姜不吃醋⭐️
如果本文有什么错误的话欢迎在评论区中指正
与其明天开始,不如现在行动!
本文内容是关于C/C++算法入门的简单模拟题,没有涉及很复杂的算法,主要考察代码能力。模拟是一类“题目怎么说,你就怎么做”的题目,如果实现起来不太麻烦,就可以称之为“简单模拟”。这类题目不涉及算法,完全知识根据题目描述来进行代码的编写,所以考察的是代码能力。本文算法为:害死人不偿命的(3n+1)猜想和挖掘机技术哪家强。
题目描述
卡拉兹猜想:
对任何一个自然数n,如果它是偶数,那么就把它砍掉一半;如果它是奇数,那么把(3n+1)
砍掉一半。这样一直反复砍下去,最后一定在某一步得到n=1
。卡拉兹在1950年的世界数学家大会上公布了这一猜想,传说当时耶鲁大学师生齐动员,拼命想证明这个貌似很荒唐······
在此处并非想要证明卡拉兹猜想,而是对给定的任一不超过1000的正整数n,简单数一下,需要多少步才能得到n=1?
输入格式
每个测试输入包含1个测试用例,即给出自然数n的值。
输出格式
输出从n计算到1需要的步数
输入样例
3
输出样例
5
#include
int stepNum(int a){
if(a == 1){
return 0;
}
int num = 0;
while (a != 1)
{
if(a % 2 == 0){
a /= 2;
}else{
a = (a * 3 + 1) / 2;
}
num++;
}
return num;
}
int main(){
int a;
scanf("%d", &a);
int num = stepNum(a);
printf("%d", num);
return 0;
}
题目描述
为了用事实说明挖掘机技术到底哪家强,PAT组织了一场挖掘机技能大赛。请根据比赛结果统计出技术最强的那个学校。
输入格式
在第一行给出不超过10^5的正整数N,即参赛人数。随后N行,每行给出一位参赛者的信息和成绩,包括其所代表的学校的编号(从1开始连续编号)及其比赛成绩(百分制),中间以空格分隔。
输出格式
在一行中给出总得分最高的学校的编号及其总分,中间以空格分隔。题目保证答案唯一,没有并列。
输入样例
6
3 65
2 80
1 100
2 70
3 40
3 0
输出样例
2 150
#include
#include
const int N = pow(10,5);
int main(){
int schID, score;
int num;
scanf("%d", &num);
if(num > N){
printf("参赛人数超出限制!");
exit;
}
int gameNum[num] = {0};
for (int i = 0; i < num; i++)
{
scanf("%d%d",&schID, &score);
gameNum[schID] += score;
}
int MAX = 0;
int ID;
for (int i = 0; i < num; i++)
{
if (gameNum[i] > MAX){
MAX = gameNum[i];
ID = i;
}
}
printf("%d %d", ID, MAX);
return 0;
}
文章中代码的编写使用的都是C/C++基础知识,多加练习熟能生巧。
本文中若是有出现的错误请在评论区或者私信指出,我再进行改正优化,如果文章对你有所帮助,请给博主一个宝贵的三连,感谢大家!!!