冰雹数【模拟, 2016, 省赛】
任意给定一个正整数 N,
如果是偶数,执行: N/2;
如果是奇数,执行: N×3+1,
生成的新的数字再执行同样的动作,循环往复。
通过观察发现,这个数字会一会儿上升到很高,一会儿又降落下来。
就这样起起落落的,但最终必会落到"1",这有点像小冰雹粒子在冰雹云中翻滚增长的样子。
比如 N=9,
9,28,14,7,22,11,34,17,52,26,13,40,20,10,5,16,8,4,2,1
可以看到,N=9 的时候,这个"小冰雹"最高冲到了 52 这个高度。
输入描述
输入一个正整数 )N(N<106)。
输 出描述
输出一个正整数,表示不大于N 的数字,经过冰雹数变换过程中,最高冲到了多少。
输入输出样例
示例
输入文章来源:https://www.toymoban.com/news/detail-421363.html
10
输出
52
运行限制
语言 | 最大运行时间 | 最大运行内存 |
---|---|---|
C++ | 1s | 256M |
C | 1s | 256M |
Java | 2s | 256M |
Python3 | 15s | 256M |
#include <stdio.h>
#include <stdlib.h>
int main(int argc, char *argv[])
{
long long int n,max=0;
scanf("%lld",&n);
for(long long int i=2;i<=n;i++){
long long int t=i;
while(t!=1){
if(t&1){t=t*3+1;}
else {t>>=1;}
if(t>max){max=t;}
}
}
printf("%lld",max);
return 0;
}
ISBN号码(模拟, 字符串, 2008, NOIP普及组)
题目描述
每一本正式出版的图书都有一个 ISBN 号码与之对应,ISBN 码包括 9 位数字、1 位识别码和 3 位分隔符,其规定格式如 “x-xxx-xxxxx-x”,其中符号“-”是分隔符(键盘上的减号),最后一位是识别码,例如0-670-82162-4 就是一个标准的 ISBN 码。ISBN 码的首位数字表示书籍的出版语言,例如 0 代表英语;第一个分隔符“-”之后的三位数字代表出版社,例如 670 代表维京出版社;第二个分隔之后的五位数字代表该书在出版社的编号;最后一位为识别码。
识别码的计算方法如下:
首位数字乘以 1 加上次位数字乘以 2 …… 以此类推,用所得的结果 mod 11,所得的余数即为识别码,如果余数为 10,则识别码为大写字母 X。例如 ISBN 号码 0-670-82162-4 中的识别码 4 是这样得到的:对 067082162这9 个数字,从左至右,分别乘以 1,2,…,9,再求和,即 0×1+6×2+……+2×9=158,然后取 158 mod 11 的结果 4 作为识别码。 你的任务是编写程序判断输入的ISBN号码中识别码是否正确,如果正确,则仅输出 Right
;如果错误,则输出你认为是正确的 ISBN 号码。
输入描述
输入一行,是一个字符序列,表示一本书的 ISBN 号码(保证输入符合 ISBN 号码的格式要求)。
输出描述
输出一行,假如输入的 ISBN 号码的识别码正确,那么输出Right
,否则,按照规定的格式,输出正确的 ISBN 号码(包括分隔符“-”)。
输入输出样例
示例 1
输入
0-670-82162-4
输出
Right
示例 2
输入
0-670-82162-0
输出文章来源地址https://www.toymoban.com/news/detail-421363.html
0-670-82162-4
运行限制
- 最大运行时间:1s
- 最大运行内存: 128M
#include<stdio.h>
int main(){
char arr[14],ch[12]="0123456789X";
scanf("%s",arr);
int i,j=1,sum=0;
for(i=0;i<12;i++){
if(arr[i]=='-')continue;
sum+=(arr[i]-'0')*(j++);
}
if(ch[sum%11]==arr[12])printf("Right");
else {arr[12]=ch[sum%11];
printf("%s",arr);}
return 0;
}
到了这里,关于蓝桥杯题的题的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!