当前位置: 首页 > news >正文

【C】PAT 1006-1010

1006 换个格式输出整数

让我们用字母 B 来表示“百”、字母 S 表示“十”,用 12...n 来表示不为零的个位数字 n(<10),换个格式来输出任一个不超过 3 位的正整数。例如 234 应该被输出为 BBSSS1234,因为它有 2 个“百”、3 个“十”、以及个位的 4。

输入格式:

每个测试输入包含 1 个测试用例,给出正整数 n(<1000)。

输出格式:

每个测试用例的输出占一行,用规定的格式输出 n。

输入样例 1:

234

输出样例 1:

BBSSS1234

输入样例 2:

23

输出样例 2:

SS123

思路:

题目限制整数的位数最多三位,那么可以提取三位上的数字就可以了。某一位为0,那么循环根本不会执行,因此也不需要写额外的判断语句。 

代码: 

#include <stdio.h>int main(){int n;scanf("%d",&n);for (int i=0; i < n/100; i++)putchar('B');for (int i = 0; i < n / 10 % 10; i++)putchar('S');for (int i = 0; i < n % 10; i++)putchar('1' + i);}

1007 素数对猜想

让我们定义dn​为:dn​=pn+1​−pn​,其中pi​是第i个素数。显然有d1​=1,且对于n>1有dn​是偶数。“素数对猜想”认为“存在无穷多对相邻且差为2的素数”。

现给定任意正整数N(<105),请计算不超过N的满足猜想的素数对的个数。

输入格式:

输入在一行给出正整数N

输出格式:

在一行中输出不超过N的满足猜想的素数对的个数。

输入样例:

20

输出样例:

4

思路:

初始化:100个素数里初始化便写入前两个2,3,从4开始验证,这样不影响边界情况(N=5之前没有孪生素数),避免了2这样没有更小的素数可供验证的情况,并且进入循环即可开始验证孪生素数。

N孪生素数对数
1~40
204
1008
100035
10000205
1000001224

代码: 

#include <stdio.h>int main()
{int N;scanf("%d", &N);/* Record primality of three successive numbers starting from 2, 3, 4 */int iPrimeMinus2 = 1, iPrimeMinus1 = 1, iPrime;int primes[100] = {2, 3};   /* Record the prime numbers before sqrt(10^5) */int twincount = 0;          /* Count of twin primes */int primecount = 2;         /* Count of prime numbers *//* Start from 4 */for (int i = 4; i <= N; i++) {/* Test if i is a prime number */iPrime = 1;for (int j = 0; iPrime && primes[j] * primes[j] <= i; j++)if (i % primes[j] == 0)iPrime = 0;/* If i is a prime number, record */if (iPrime) {if (primecount < 100)    primes[primecount++] = i;if (iPrimeMinus2 == 1)   twincount++;    /* a prime pair found */}/* Shift the primality flags to next numbers */iPrimeMinus2 = iPrimeMinus1;iPrimeMinus1 = iPrime;}printf("%d", twincount);return 0;
}

1008 数组元素循环右移

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

输入格式:

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

输出格式:

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

输入样例:

6 2
1 2 3 4 5 6

输出样例:

5 6 1 2 3 4

代码: 

#include <stdio.h>int main()
{int N, M, numbers[100];scanf("%d %d", &N, &M);M %= N; /* M could be larger than N *//* Read */for (int i = 0; i < N; i++)scanf("%d", &numbers[i]);/* Print */for (int i = N - M; i < N; i++)      /* Print N - M to N - 1 */printf("%d ", numbers[i]);for (int i = 0; i < N - M - 1; i++)  /* Print 0 to N - M - 2 */printf("%d ", numbers[i]);printf("%d", numbers[N - M - 1]);   /* Print N - M - 1, no blankspace */return 0;
}

1009 说反话

给定一句英语,要求你编写程序,将句中所有单词的顺序颠倒输出。

输入格式:

测试输入包含一个测试用例,在一行内给出总长度不超过 80 的字符串。字符串由若干单词和若干空格组成,其中单词是由英文字母(大小写有区分)组成的字符串,单词之间用 1 个空格分开,输入保证句子末尾没有多余的空格。

输出格式:

每个测试用例的输出占一行,输出倒序后的句子。

输入样例:

Hello World Here I Come

输出样例:

Come I Here World Hello

思路:

只用一个字符串,从后向前搜索单词,依次输出。 

代码:

#include <stdio.h>
#include <string.h>int main()
{char s[82], *p;scanf("%[^\n]", s);for (p = s + strlen(s) - 1; p >= s; p--) {if (*(p - 1) == ' ')printf("%s ", p);if (p == s)printf("%s", p);if (*p == ' ')*p = '\0';}return 0;
}

1010 一元多项式求导

设计函数求一元多项式的导数。(注:xn(n为整数)的一阶导数为nxn−1。)

输入格式:

以指数递降方式输入多项式非零项系数和指数(绝对值均为不超过 1000 的整数)。数字间以空格分隔。

输出格式:

以与输入相同的格式输出导数多项式非零项的系数和指数。数字间以空格分隔,但结尾不能有多余空格。注意“零多项式”的指数和系数都是 0,但是表示为 0 0

输入样例:

3 4 -5 2 6 1 -2 0

输出样例:

12 3 -10 1 6 0

代码: 

#include <stdio.h>int main()
{int coef, index, count = 0;while (scanf("%d %d", &coef, &index) != EOF) {if (index) { /* Constant terms result in zero */if (count++) putchar(' ');printf("%d %d", coef * index, index - 1);}}/* Zero polynomial or constant */if (count == 0)puts("0 0");return 0;
}

http://www.lryc.cn/news/517292.html

相关文章:

  • 力扣双指针-算法模版总结
  • 解释一下:运放的输入偏置电流
  • Windows 11 上通过 WSL (Windows Subsystem for Linux) 安装 MySQL 8
  • 信用租赁系统助力企业实现免押金租赁新模式
  • OSPF特殊区域(open shortest path first LSA Type7)
  • Element-plus表单总结
  • unity学习13:gameobject的组件component以及tag, layer 归类
  • 51单片机——中断(重点)
  • 企业级Java 实体对象类定义规范
  • 【网络云SRE运维开发】2025第2周-每日【2025/01/07】小测-【第7章 GVRP链路捆绑】理论和实操
  • 蓝桥杯算法|练习记录
  • C语言 扫雷程序设计
  • CSS语言的文件操作
  • 前端-计算机网络篇
  • 行为分析:LSTM、3D CNN、SlowFast Networks。这三者的优缺点
  • 【HarmonyOS NEXT】鸿蒙应用使用后台任务之长时任务,解决屏幕录制音乐播放等操作不被挂起
  • STM32-WWDG/IWDG看门狗
  • 基于视觉惯性 SLAM(VSLAM)、相机和 IMU 数据的融合执行 6 自由度位姿跟踪
  • Matlab仿真径向受压圆盘光弹图像
  • 网络安全抓包
  • WebSocket 测试调试:工具与实践
  • ArmSoM RK3588/RK3576核心板,开发板网络设置
  • 【学Rust开发CAD】1 环境搭建
  • 数据结构与算法之二叉树: LeetCode 108. 将有序数组转换为二叉搜索树 (Ts版)
  • Java 多线程之@Async
  • 代码随想录day38 动态规划6
  • LabVIEW无标题的模态VI窗口的白框怎么去除?
  • iOS - 原子操作
  • Go语言的语法
  • 【MySQL 保姆级教学】用户管理和数据库权限(16)