pta模拟题(7-15 BCD解密、7-16 数列求和-加强版、7-17 出租、7-18 反向数相加、7-19 一帮一、7-20 连续因子)

本文主要是介绍pta模拟题(7-15 BCD解密、7-16 数列求和-加强版、7-17 出租、7-18 反向数相加、7-19 一帮一、7-20 连续因子),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

7-15 BCD解密

BCD数是用一个字节来表达两位十进制的数,每四个比特表示一位。所以如果一个BCD数的十六进制是0x12,它表达的就是十进制的12。但是小明没学过BCD,把所有的BCD数都当作二进制数转换成十进制输出了。于是BCD的0x12被输出成了十进制的18了!

现在,你的程序要读入这个错误的十进制数,然后输出正确的十进制数。提示:你可以把18转换回0x12,然后再转换回12。

输入格式:

输入在一行中给出一个[0, 153]范围内的正整数,保证能转换回有效的BCD数,也就是说这个整数转换成十六进制时不会出现A-F的数字。

输出格式:

输出对应的十进制数。

输入样例:

18

输出样例:

12

代码如下

#include<stdio.h>
int main()
{int num;scanf("%d",&num);printf("%x",num);return 0;
}

实际上就是输入一个数,将这个数转化为16进制;

#include<stdio.h>
int main()
{int n =0;scanf("%d",&n);int a,b;a=n/16;b=n%16;printf("%d",10*a+1*b);return 0;
}

7-16 数列求和-加强版

给定某数字A(1≤A≤9)以及非负整数N(0≤N≤100000),求数列之和S=A+AA+AAA+⋯+AA⋯A(N个A)。例如A=1, N=3时,S=1+11+111=123。

输入格式:

输入数字A与非负整数N。

输出格式:

输出其N项数列之和S的值。

输入样例:

1 3

输出样例:

123

 

代码如下

#include <stdio.h>
int main() 
{int A, N;scanf("%d %d", &A, &N);int s[100001] = {0};int jinwei = 0, num = N, weishu = 0;for (int i = 0; i < N + 1; i++) {s[i] = num * A + jinwei;jinwei = s[i] / 10;s[i] = s[i] % 10;num--;}for (int i = N; i >= 0; i--) {if (s[i] != 0) {weishu = i;break;}}for (int i = weishu; i >= 0; i--) {printf("%d", s[i]);}return 0;
}

7-17 出租

下面是新浪微博上曾经很火的一张图:

一时间网上一片求救声,急问这个怎么破。其实这段代码很简单,index数组就是arr数组的下标,index[0]=2 对应 arr[2]=1index[1]=0 对应 arr[0]=8index[2]=3 对应 arr[3]=0,以此类推…… 很容易得到电话号码是18013820100

本题要求你编写一个程序,为任何一个电话号码生成这段代码 —— 事实上,只要生成最前面两行就可以了,后面内容是不变的。

输入格式:

输入在一行中给出一个由11位数字组成的手机号码。

输出格式:

为输入的号码生成代码的前两行,其中arr中的数字必须按递减顺序给出。

输入样例:

18013820100

输出样例:

int[] arr = new int[]{8,3,2,1,0};
int[] index = new int[]{3,0,4,3,1,0,2,4,3,4,4};

代码如下

#include<stdio.h>
int main()
{char num[12];int arr[10]={0};scanf("%s",num);int count = 0;for(int i =0;i<11;++i){if(arr[num[i]-'0']==0){arr[num[i]-'0']=1;count++;}}int nums[count];printf("int[] arr = new int[]{");int j =-1;for(int i =9;i>=0;--i){if(arr[i]==1){nums[++j]=i;printf("%d",i);if(j<count-1)printf(",");}}printf("};\nint[] index = new int[]{");for(int j = 0;j<11;++j){for(int i = 0;i<count;++i){if((num[j]-'0')==nums[i]){printf("%d",i);if(j<10)printf(",");}}}printf("};\n");return 0;
}

7-18 反向数相加

反向数是将一个阿拉伯数字按相反的次序写。把第一个数字写成最后一个数字,依次类推。 例如, 1245的反向数为5421。请注意,数字所有的前导零要被省略,所以,如果数字结尾有零,写反向数时零被略去(例如,1200的反向数是21)。还要注意反向数没有零结尾。
你的任务是将两个反向数相加,并输出它们的反向和。当然,结果不是唯一的,因为一个数可以是几个数的反向形式(例如21在反向前可以是12,120 或1200)。为此,本题设定没有0因为反向而丢失(例如,设定原来的数是12)。

输入格式:

输入由N个测试用例组成。输入的第一行仅给出正整数N,然后给出测试用例。每个测试用例一行,由2个由空格分开的正整数组成,这是要反向相加的数。

输出格式:

对每个测试用例,输出一行,仅包含一个整数,将两个反向数进行求和,之后再反向。在输出时把前导0略去。

输入样例:

3
24 1
4358 754
305 794

输出样例:

34
1998
1

代码如下

#include <stdio.h>
int backshu(int num)
{int ret = 0;while(num>0){ret = ret * 10 + num % 10;num /= 10;}return ret;
}int main() 
{int N;scanf("%d", &N);for (int i = 0; i < N; i++) {int num1,num2;scanf("%d %d", &num1, &num2);int ret1 = backshu(num1);int ret2 = backshu(num2);int sum = ret1 + ret2;int backsum = backshu(sum);printf("%d\n", backsum);}return 0;
}

7-19 一帮一

“一帮一学习小组”是中小学中常见的学习组织方式,老师把学习成绩靠前的学生跟学习成绩靠后的学生排在一组。本题就请你编写程序帮助老师自动完成这个分配工作,即在得到全班学生的排名后,在当前尚未分组的学生中,将名次最靠前的学生与名次最靠后的异性学生分为一组。

输入格式:

输入第一行给出正偶数N(≤50),即全班学生的人数。此后N行,按照名次从高到低的顺序给出每个学生的性别(0代表女生,1代表男生)和姓名(不超过8个英文字母的非空字符串),其间以1个空格分隔。这里保证本班男女比例是1:1,并且没有并列名次。

输出格式:

每行输出一组两个学生的姓名,其间以1个空格分隔。名次高的学生在前,名次低的学生在后。小组的输出顺序按照前面学生的名次从高到低排列。

输入样例:

8
0 Amy
1 Tom
1 Bill
0 Cindy
0 Maya
1 John
1 Jack
0 Linda

输出样例:

Amy Jack
Tom Linda
Bill Maya
Cindy John

代码如下

#include<stdio.h> 
struct Student
{int sex;char name[9];
}stu[50] = {0};
int main()
{  int n;scanf("%d",&n);for(int i=0;i<n;++i)  {  scanf("%d %s",&stu[i].sex,stu[i].name); } for(int i=0;i<n;++i)  {  for(int j=n-1;j>i;--j){  if(stu[i].sex!=stu[j].sex && stu[j].sex!=-1){  printf("%s %s\n",stu[i].name,stu[j].name);stu[j].sex=-1;break;}  }  }  return 0;
}

7-20 连续因子

分数 300

全屏浏览题目

切换布局

作者 陈越

单位 浙江大学

一个正整数 N 的因子中可能存在若干连续的数字。例如 630 可以分解为 3×5×6×7,其中 5、6、7 就是 3 个连续的数字。给定任一正整数 N,要求编写程序求出最长连续因子的个数,并输出最小的连续因子序列。

输入格式:

输入在一行中给出一个正整数 N(1<N<231)。

输出格式:

首先在第 1 行输出最长连续因子的个数;然后在第 2 行中按 因子1*因子2*……*因子k 的格式输出最小的连续因子序列,其中因子按递增顺序输出,1 不算在内。

输入样例:

630

输出样例:

3
5*6*7

代码如下 

#include<stdio.h>
#include<math.h>
int main()
{int n = 0;scanf("%d",&n);for(int len=12;len>0;--len){for(int start = 2;start<=sqrt(n);++start){int sum = 1;for(int i =start ;i<len+start;++i){sum*=i;}if(n%sum==0){printf("%d\n%d",len,start);for(int k = start+1;k<len+start;++k){printf("*%d",k);}return 0;}}}printf("1\n%d",n);return 0;
}

这篇关于pta模拟题(7-15 BCD解密、7-16 数列求和-加强版、7-17 出租、7-18 反向数相加、7-19 一帮一、7-20 连续因子)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/444750

相关文章

Python实现数据清洗的18种方法

《Python实现数据清洗的18种方法》本文主要介绍了Python实现数据清洗的18种方法,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学... 目录1. 去除字符串两边空格2. 转换数据类型3. 大小写转换4. 移除列表中的重复元素5. 快速统

Springboot的ThreadPoolTaskScheduler线程池轻松搞定15分钟不操作自动取消订单

《Springboot的ThreadPoolTaskScheduler线程池轻松搞定15分钟不操作自动取消订单》:本文主要介绍Springboot的ThreadPoolTaskScheduler线... 目录ThreadPoolTaskScheduler线程池实现15分钟不操作自动取消订单概要1,创建订单后

详解Spring Boot接收参数的19种方式

《详解SpringBoot接收参数的19种方式》SpringBoot提供了多种注解来接收不同类型的参数,本文给大家介绍SpringBoot接收参数的19种方式,感兴趣的朋友跟随小编一起看看吧... 目录SpringBoot接受参数相关@PathVariable注解@RequestHeader注解@Reque

Ilya-AI分享的他在OpenAI学习到的15个提示工程技巧

Ilya(不是本人,claude AI)在社交媒体上分享了他在OpenAI学习到的15个Prompt撰写技巧。 以下是详细的内容: 提示精确化:在编写提示时,力求表达清晰准确。清楚地阐述任务需求和概念定义至关重要。例:不用"分析文本",而用"判断这段话的情感倾向:积极、消极还是中性"。 快速迭代:善于快速连续调整提示。熟练的提示工程师能够灵活地进行多轮优化。例:从"总结文章"到"用

这15个Vue指令,让你的项目开发爽到爆

1. V-Hotkey 仓库地址: github.com/Dafrok/v-ho… Demo: 戳这里 https://dafrok.github.io/v-hotkey 安装: npm install --save v-hotkey 这个指令可以给组件绑定一个或多个快捷键。你想要通过按下 Escape 键后隐藏某个组件,按住 Control 和回车键再显示它吗?小菜一碟: <template

poj2406(连续重复子串)

题意:判断串s是不是str^n,求str的最大长度。 解题思路:kmp可解,后缀数组的倍增算法超时。next[i]表示在第i位匹配失败后,自动跳转到next[i],所以1到next[n]这个串 等于 n-next[n]+1到n这个串。 代码如下; #include<iostream>#include<algorithm>#include<stdio.h>#include<math.

PTA求一批整数中出现最多的个位数字

作者 徐镜春 单位 浙江大学 给定一批整数,分析每个整数的每一位数字,求出现次数最多的个位数字。例如给定3个整数1234、2345、3456,其中出现最多次数的数字是3和4,均出现了3次。 输入格式: 输入在第1行中给出正整数N(≤1000),在第二行中给出N个不超过整型范围的非负整数,数字间以空格分隔。 输出格式: 在一行中按格式“M: n1 n2 ...”输出,其中M是最大次数,n

系统架构师考试学习笔记第三篇——架构设计高级知识(20)通信系统架构设计理论与实践

本章知识考点:         第20课时主要学习通信系统架构设计的理论和工作中的实践。根据新版考试大纲,本课时知识点会涉及案例分析题(25分),而在历年考试中,案例题对该部分内容的考查并不多,虽在综合知识选择题目中经常考查,但分值也不高。本课时内容侧重于对知识点的记忆和理解,按照以往的出题规律,通信系统架构设计基础知识点多来源于教材内的基础网络设备、网络架构和教材外最新时事热点技术。本课时知识

XTU 1233 n个硬币连续m个正面个数(dp)

题面: Coins Problem Description: Duoxida buys a bottle of MaiDong from a vending machine and the machine give her n coins back. She places them in a line randomly showing head face or tail face o

线性因子模型 - 独立分量分析(ICA)篇

序言 线性因子模型是数据分析与机器学习中的一类重要模型,它们通过引入潜变量( latent variables \text{latent variables} latent variables)来更好地表征数据。其中,独立分量分析( ICA \text{ICA} ICA)作为线性因子模型的一种,以其独特的视角和广泛的应用领域而备受关注。 ICA \text{ICA} ICA旨在将观察到的复杂信号