B1001.害死人不偿命的(3n+1)猜想 (15)

Description:

卡拉兹(Callatz)猜想:

对任何一个自然数n,如果它是偶数,那么把它砍掉一半;如果它是奇数,那么把(3n+1)砍掉一半。这样一直反复砍下去,最后一定在某一步得到n=1。卡拉兹在1950年的世界数学家大会上公布了这个猜想,传说当时耶鲁大学师生齐动员,拼命想证明这个貌似很傻很天真的命题,结果闹得学生们无心学业,一心只证(3n+1),以至于有人说这是一个阴谋,卡拉兹是在蓄意延缓美国数学界教学与科研的进展……

我们今天的题目不是证明卡拉兹猜想,而是对给定的任一不超过1000的正整数n,简单地数一下,需要多少步(砍几下)才能得到n=1?

Input:

每个测试输入包含1个测试用例,即给出自然数n的值。

Output:

输出从n计算到1需要的步数。

Sample Input:

3

Sample Output:

5

  1. #include <cstdio>
  2.  
  3. int main()
  4. {
  5. //freopen("E:\\Temp\\input.txt", "r", stdin);
  6.  
  7. int n, step = ;
  8. scanf("%d", &n);
  9.  
  10. while(n != ) {
  11. if(n% == ) {
  12. n /= ;
  13. } else {
  14. n = (*n+)/;
  15. }
  16. step++;
  17. }
  18.  
  19. printf("%d\n", step);
  20.  
  21. return ;
  22. }

B1032. 挖掘机技术哪家强 (20)

Description:

为了用事实说明挖掘机技术到底哪家强,PAT组织了一场挖掘机技能大赛。现请你根据比赛结果统计出技术最强的那个学校。

Input:

输入在第1行给出不超过105的正整数N,即参赛人数。随后N行,每行给出一位参赛者的信息和成绩,包括其所代表的学校的编号(从1开始连续编号)、及其比赛成绩(百分制),中间以空格分隔。

Output:

在一行中给出总得分最高的学校的编号、及其总分,中间以空格分隔。题目保证答案唯一,没有并列。

Sample Input:

6
3 65
2 80
1 100
2 70
3 40
3 0

Sample Output:

2 150

  1. #include <cstdio>
  2.  
  3. #define MaxSize 100010
  4.  
  5. int school[MaxSize];
  6.  
  7. int main()
  8. {
  9. //freopen("E:\\Temp\\input.txt", "r", stdin);
  10.  
  11. int n, schID, score;
  12. scanf("%d", &n);
  13. for(int i=; i<n; ++i) {
  14. scanf("%d %d", &schID, &score);
  15. school[schID] += score;
  16. }
  17.  
  18. int ID, maxscore = -;
  19. for(int i=; i<=n; ++i) {
  20. if(school[i] > maxscore) {
  21. ID = i;
  22. maxscore = school[i];
  23. }
  24. }
  25.  
  26. printf("%d %d\n", ID, maxscore);
  27. }

B1011. A+B和C (15)

Description:

给定区间[-231, 231]内的3个整数A、B和C,请判断A+B是否大于C。

Input:

输入第1行给出正整数T(<=10),是测试用例的个数。随后给出T组测试用例,每组占一行,顺序给出A、B和C。整数间以空格分隔。

Output:

对每组测试用例,在一行中输出“Case #X: true”如果A+B>C,否则输出“Case #X: false”,其中X是测试用例的编号(从1开始)。

Sample Input:

4
1 2 3
2 3 4
2147483647 0 2147483646
0 -2147483648 -2147483647

Sample Output:

Case #1: false
Case #2: true
Case #3: true
Case #4: false

  1. #include <cstdio>
  2.  
  3. int main()
  4. {
  5. //freopen("E:\\Temp\\input.txt", "r", stdin);
  6.  
  7. int T;
  8. long long a, b, c;
  9. scanf("%d", &T);
  10. for(int i=; i<=T; ++i) {
  11. scanf("%lld %lld %lld", &a, &b, &c);
  12. if(a+b > c) {
  13. printf("Case #%d: true\n", i);
  14. } else {
  15. printf("Case #%d: false\n", i);
  16. }
  17. }
  18.  
  19. return ;
  20. }

B1016. 部分A+B (15)

Description:

正整数A的“DA(为1位整数)部分”定义为由A中所有DA组成的新整数PA。例如:给定A = 3862767,DA = 6,则A的“6部分”PA是66,因为A中有2个6。

现给定A、DA、B、DB,请编写程序计算PA + PB

Input:

输入在一行中依次给出A、DA、B、DB,中间以空格分隔,其中0 < A, B < 1010

Output:

在一行中输出PA + PB的值。

Sample Input1:

3862767 6 13530293 3

Sample Output1:

399

Sample Input2:

3862767 1 13530293 8

Sample Output2:

0

  1. #include <cstdio>
  2.  
  3. int main()
  4. {
  5. //freopen("E:\\Temp\\input.txt", "r", stdin);
  6.  
  7. int Da, Db;
  8. long long pA = , pB = , A, B;
  9. scanf("%lld %d %lld %d", &A, &Da, &B, &Db);
  10.  
  11. while(A != ) {
  12. if(A% == Da) {
  13. pA = pA*+Da;
  14. }
  15. A /= ;
  16. }
  17. while(B != ) {
  18. if(B% == Db) {
  19. pB = pB*+Db;
  20. }
  21. B /= ;
  22. }
  23.  
  24. printf("%lld\n", pA+pB);
  25.  
  26. return ;
  27. }

B1026. 程序运行时间 (15)

Description:

要获得一个C语言程序的运行时间,常用的方法是调用头文件time.h,其中提供了clock()函数,可以捕捉从程序开始运行到clock()被调用时所耗费的时间。这个时间单位是clock tick,即“时钟打点”。同时还有一个常数CLK_TCK,给出了机器时钟每秒所走的时钟打点数。于是为了获得一个函数f的运行时间,我们只要在调用f之前先调用clock(),获得一个时钟打点数C1;在f执行完成后再调用clock(),获得另一个时钟打点数C2;两次获得的时钟打点数之差(C2-C1)就是f运行所消耗的时钟打点数,再除以常数CLK_TCK,就得到了以秒为单位的运行时间。

这里不妨简单假设常数CLK_TCK为100。现给定被测函数前后两次获得的时钟打点数,请你给出被测函数运行的时间。

Input:

输入在一行中顺序给出2个整数C1和C1。注意两次获得的时钟打点数肯定不相同,即C1 < C2,并且取值在[0, 107]。

Output:

在一行中输出被测函数运行的时间。运行时间必须按照“hh:mm:ss”(即2位的“时:分:秒”)格式输出;不足1秒的时间四舍五入到秒。

Sample Input:

123 4577973

Sample Output:

12:42:59

  1. #include <cstdio>
  2.  
  3. int main()
  4. {
  5. //freopen("E:\\Temp\\input.txt", "r", stdin);
  6.  
  7. int C1, C2;
  8. scanf("%d %d", &C1, &C2);
  9.  
  10. int ans = C2 - C1;
  11. if(ans% < ) {
  12. ans /= ;
  13. } else {
  14. ans = ans/+;
  15. }
  16.  
  17. printf("%02d:%02d:%02d\n", ans/, ans%/, ans%);
  18.  
  19. return ;
  20. }

B1008. 数组元素循环右移问题 (20)

Description:

一个数组A中存有N(N>0)个整数,在不允许使用另外数组的前提下,将每个整数循环向右移M(M>=0)个位置,即将A中的数据由(A0A1……AN-1)变换为(AN-M …… AN-1 A0 A1……AN-M-1)(最后M个数循环移至最前面的M个位置)。如果需要考虑程序移动数据的次数尽量少,要如何设计移动的方法?

Input:

每个输入包含一个测试用例,第1行输入N ( 1<=N<=100)、M(M>=0);第2行输入N个整数,之间用空格分隔。

Output:

在一行中输出循环右移M位以后的整数序列,之间用空格分隔,序列结尾不能有多余空格。

Sample Input:

6 2
1 2 3 4 5 6

Sample Output:

5 6 1 2 3 4

  1. #include <cstdio>
  2.  
  3. #define MaxSize 110
  4.  
  5. int List[MaxSize];
  6.  
  7. int main()
  8. {
  9. //freopen("E:\\Temp\\input.txt", "r", stdin);
  10.  
  11. int N, M, counter = ;
  12. scanf("%d %d", &N, &M);
  13. for(int i=; i<N; ++i) {
  14. scanf("%d", &List[i]);
  15. }
  16.  
  17. M %= N;
  18. for(int i=N-M; i<N; ++i) {
  19. if(counter != N) {
  20. printf("%d ", List[i]);
  21. } else {
  22. printf("%d\n", List[i]);
  23. }
  24. counter++;
  25. }
  26. for(int i=; i<N-M; ++i) {
  27. if(counter != N) {
  28. printf("%d ", List[i]);
  29. } else {
  30. printf("%d\n", List[i]);
  31. }
  32. counter++;
  33. }
  34.  
  35. return ;
  36. }

B1012. 数字分类 (20)

Description:

定一系列正整数,请按要求对数字进行分类,并输出以下5个数字:

  • A1 = 能被5整除的数字中所有偶数的和;
  • A2 = 将被5除后余1的数字按给出顺序进行交错求和,即计算n1-n2+n3-n4...;
  • A3 = 被5除后余2的数字的个数;
  • A4 = 被5除后余3的数字的平均数,精确到小数点后1位;
  • A5 = 被5除后余4的数字中最大数字。

Input:

每个输入包含1个测试用例。每个测试用例先给出一个不超过1000的正整数N,随后给出N个不超过1000的待分类的正整数。数字间以空格分隔。

Output:

对给定的N个正整数,按题目要求计算A1~A5并在一行中顺序输出。数字间以空格分隔,但行末不得有多余空格。

若其中某一类数字不存在,则在相应位置输出“N”。

Sample Input1:

13 1 2 3 4 5 6 7 8 9 10 20 16 18

Sample Output1:

30 11 2 9.7 9

Sample Input2:

8 1 2 4 5 6 7 9 16

Sample Output2:

N 11 2 N 9

  1. #include <cstdio>
  2.  
  3. #define MaxSize 5
  4.  
  5. int List[MaxSize], ans[MaxSize];
  6.  
  7. int main()
  8. {
  9. //freopen("E:\\Temp\\input.txt", "r", stdin);
  10.  
  11. int N, temp;
  12. scanf("%d", &N);
  13. for(int i=; i<N; ++i) {
  14. scanf("%d", &temp);
  15. if(temp% == ) {
  16. if(temp% == ) {
  17. ans[] += temp;
  18. List[]++;
  19. }
  20. } else if(temp% == ) {
  21. if(List[]% == ) {
  22. ans[] += temp;
  23. } else {
  24. ans[] -= temp;
  25. }
  26. List[]++;
  27. } else if(temp% == ) {
  28. List[]++;
  29. } else if(temp% == ) {
  30. ans[] += temp;
  31. List[]++;
  32. } else {
  33. if(temp > ans[]) {
  34. ans[] = temp;
  35. }
  36. List[]++;
  37. }
  38. }
  39.  
  40. if(List[] == ) {
  41. printf("N ");
  42. } else {
  43. printf("%d ", ans[]);
  44. }
  45. if(List[] == ) {
  46. printf("N ");
  47. } else {
  48. printf("%d ", ans[]);
  49. }
  50. if(List[] == ) {
  51. printf("N ");
  52. } else {
  53. printf("%d ", List[]);
  54. }
  55. if(List[] == ) {
  56. printf("N ");
  57. } else {
  58. printf("%.1f ", (double)ans[]/List[]);
  59. }
  60. if(List[] == ) {
  61. printf("N\n");
  62. } else {
  63. printf("%d\n", ans[]);
  64. }
  65.  
  66. return ;
  67. }

PAT/简单模拟习题集(一)的更多相关文章

  1. PAT/简单模拟习题集(二)

    B1018. 锤子剪刀布 (20) Discription: 大家应该都会玩"锤子剪刀布"的游戏:两人同时给出手势,胜负规则如图所示: 现给出两人的交锋记录,请统计双方的胜.平.负 ...

  2. java web学习总结(二十二) -------------------简单模拟SpringMVC

    在Spring MVC中,将一个普通的java类标注上Controller注解之后,再将类中的方法使用RequestMapping注解标注,那么这个普通的java类就够处理Web请求,示例代码如下: ...

  3. WPF简单模拟QQ登录背景动画

    介绍 之所以说是简单模拟,是因为我不知道QQ登录背景动画是怎么实现的.这里是通过一些办法把它简化了,做成了类似的效果 效果图 大体思路 首先把背景看成是一个4行8列的点的阵距,X轴Y轴都是距离70.把 ...

  4. Linux 内核 链表 的简单模拟(2)

    接上一篇Linux 内核 链表 的简单模拟(1) 第五章:Linux内核链表的遍历 /** * list_for_each - iterate over a list * @pos: the & ...

  5. Linux 内核 链表 的简单模拟(1)

    第零章:扯扯淡 出一个有意思的题目:用一个宏定义FIND求一个结构体struct里某个变量相对struc的编移量,如 struct student { int a; //FIND(struct stu ...

  6. JavaWeb学习总结(四十九)——简单模拟Sping MVC

    在Spring MVC中,将一个普通的java类标注上Controller注解之后,再将类中的方法使用RequestMapping注解标注,那么这个普通的java类就够处理Web请求,示例代码如下: ...

  7. 简单模拟Hibernate的主要功能实现

    在学习期间接触到Hibernate框架,这是一款非常优秀的O/R映射框架,大大简化了在开发web项目过程中对数据库的操作.这里就简单模拟其底层的实现. /*******代码部分,及其主要注解***** ...

  8. 【HDU 4452 Running Rabbits】简单模拟

    两只兔子Tom和Jerry在一个n*n的格子区域跑,分别起始于(1,1)和(n,n),有各自的速度speed(格/小时).初始方向dir(E.N.W.S)和左转周期turn(小时/次). 各自每小时往 ...

  9. Jquery源码分析与简单模拟实现

    前言 最近学习了一下jQuery源码,顺便总结一下,版本:v2.0.3 主要是通过简单模拟实现jQuery的封装/调用.选择器.类级别扩展等.加深对js/Jquery的理解. 正文 先来说问题: 1. ...

随机推荐

  1. How to configure a static IP address on CentOS 7(CentOS7静态IP地址设置)

    Question: On CentOS 7, I want to switch from DHCP to static IP address configuration with one of my ...

  2. 空MVC项目找不到System.Web.Optimization的处理办法

    install-package Microsoft.AspNet.Web.Optimization Create the bundle in Global.asax Application_Start ...

  3. SQL 统计整个服务器上各个数据库占用的空间

    create procedure [dbo].[P__SpaceUsedView]asbegin if not exists (select 0 from tempdb..sysobjects whe ...

  4. final

    final的变量的值不能被改变.(包括形参) final的方法不能被重写. final的类不能被继承.

  5. C++关于文件的读写(续)

    上次,我们探讨了C++关于文件的读操作,这次继续写操作.写,顾名思义,就是把我们自己的东西放到文件中去. 我们举一个简单的例子,就不在乎它的排版问题了. #include<iostream> ...

  6. vue 2 滚动条加载更多数据实现

    解析: 判断滚动条到底部,需要用到DOM的三个属性值,即scrollTop.clientHeight.scrollHeight. scrollTop为滚动条在Y轴上的滚动距离. clientHeigh ...

  7. JSON字符串解析

    有时保存在数据库的数据是一串json字符串,需要进行读取的时候就需要解析操作. 简单介绍两种: 1.net.sf.json.* 2.com.alibaba.fastjson.* 需要的包自行下载. 第 ...

  8. iOS常用公共方法

      iOS常用公共方法 字数2917 阅读3070 评论45 喜欢236 1. 获取磁盘总空间大小 //磁盘总空间 + (CGFloat)diskOfAllSizeMBytes{ CGFloat si ...

  9. the fifth class

      1.实际比背景长,怎么做到的? 2个父级一个做头背景一个做尾背景 2.2层,每次自带背景上下是覆盖关系,如何做到 2层?,子浮动 3.标签 4.border可覆盖:margin-bottom 为负 ...

  10. Zip压缩和解压缩

    这个功能完全依靠一个第三方的类,ICSharpCode.SharpZipLib.dll,只是在网上搜了大半天,都没有关于这个类的详细解释,搜索的demo也是各种错误,感觉作者完全没有跑过,就那么贸贸然 ...