PTA L1-080 乘法口诀数列(详解)
创始人
2024-05-30 15:09:49
0

前言:内容包括:题目,代码实现,大致思路,代码解读

题目:

本题要求你从任意给定的两个 1 位数字 a1​ 和 a2​ 开始,用乘法口诀生成一个数列 {an​},规则为从 a1​ 开始顺次进行,每次将当前数字与后面一个数字相乘,将结果贴在数列末尾。如果结果不是 1 位数,则其每一位都应成为数列的一项。

输入格式:

输入在一行中给出 3 个整数,依次为 a1​、a2​ 和 n,满足 0≤a1​,a2​≤9,0

输出格式:

在一行中输出数列的前 n 项。数字间以 1 个空格分隔,行首尾不得有多余空格。

输入样例:

2 3 10

输出样例:

2 3 6 1 8 6 8 4 8 4

样例解释:

数列前 2 项为 2 和 3。从 2 开始,因为 2×3=6,所以第 3 项是 6。因为 3×6=18,所以第 4、5 项分别是 1、8。依次类推…… 最后因为第 6 项有 6×8=48,对应第 10、11 项应该是 4、8。而因为只要求输出前 10 项,所以在输出 4 后结束。

代码实现:

#include
int main()
{int a1 = 0;int a2 = 0;int n = 0;scanf("%d %d %d", &a1, &a2, &n);int arr[1000] = { 0 };arr[0] = a1;arr[1] = a2;int i = 0;int mul = 0;int count = 2;for (i = 0; i < n; i++){mul = arr[i] * arr[i + 1];if (mul > 9){arr[count++] = mul / 10;arr[count++] = mul % 10;}else{arr[count++] = mul;}if (count == n){break;}}printf("%d", a1);for (i = 1; i < n; i++){printf(" %d", arr[i]);}return 0;
}

大致思路:

由于是乘法口诀表,数字最大是9*9=81,即两位数字

1 使用arr数组存储所有的数字

2 初始化arr数组的第一个元素和第二个元素分别为a1,a2

3 遍历数组,从数组中第三个元素(下标为2)开始,它的值=前两个元素的乘积

   若此乘积>9 (即两位数字):

   将此乘积数字一位一位地存储:/10 得到最左边的一位数字,%10得到最右边的一位数字

   若此乘积<=9:

   直接存储此乘积数字

 代码解读:

 part 1

    arr[0] = a1;arr[1] = a2;int i = 0;int mul = 0;int count = 2;

将arr数组中的第一个元素和第二个元素分别存储a1和a2的值

mul:从数组中的第三个元素开始,每个元素=前两个元素的乘积

count:记录每个元素的下标,由于数组中第一个元素和第二个元素已经确定好了,则count设为2

             意味着从第三个元素开始

part 2

   for (i = 0; i < n; i++){mul = arr[i] * arr[i + 1];if (mul > 9){arr[count++] = mul / 10;arr[count++] = mul % 10;}else{arr[count++] = mul;}if (count == n){break;}}

1 遍历整个数组,mul存储数组中前两个元素的乘积

   若是mul>9: 将mul拆分,一位一位地存储

   若是mul<=9: 直接存储mul

2 count 是记录数组元素的下标变化的,由于mul可能是两位的数字,存储到数组中会一下占两个空间,导致还未遍历完整个数组中的元素,数组中的元素就已经达到了n个,一旦达到n个我们就需要退出循环,退出循环的条件是:count==n,因为count++是后置++,当第n个元素(最后一个元素,下标为n-1)存储到数组中后,count还会++,指向后一个空间,此时count==n

part 3

    printf("%d", a1);for (i = 1; i < n; i++){printf(" %d", arr[i]);}

按照要求的格式遍历打印数组中的内容

上一篇:Spring-Retry失败重试

下一篇:inquirerjs

相关内容

热门资讯

高三教师百日誓师发言稿 高三教师百日誓师发言稿 15篇  在充满活力,日益开放的今天,越来越多地方需要用到发言稿,发言稿的内...
领导升职表态发言稿 导语:晋升调薪主要适用于提升其职位或指派更加重要职责的人员,与员工的职位及管理职责挂钩。与绩效评估、...
春季期开学典礼发言稿 春季期开学典礼发言稿(通用5篇)  在充满活力,日益开放的今天,我们总不得不需要用到发言稿,发言稿具...
活动主持稿 活动主持稿15篇  在学习、工作生活中,我们都不可避免地要接触到主持稿,主持稿是主持人于节目进行过程...
运动会稿件 运动会稿件(精选15篇)  昔日环形的跑道,此时在你脚下却幻化为最美的彩虹。你就像一阵风,留给世界的...
证婚人讲话稿 证婚人讲话稿(通用10篇)  随着社会一步步向前发展,我们可以使用讲话稿的机会越来越多,讲话稿是讲话...
地理必修1《河流地貌的发育》... 人教版地理必修1《河流地貌的发育》说课稿  一、说教材  1.教材分析  本节课是位于人教版地理必修...
《植物妈妈有办法》说课稿 《植物妈妈有办法》说课稿(精选13篇)  作为一名老师,通常会被要求编写说课稿,说课稿有助于提高教师...
我是人民教师朗诵稿 我是人民教师朗诵稿范文(精选12篇)  在日常的学习中,大家一定没少看到经典的朗诵稿吧,朗诵是一种比...
《大灰狼开心了》说课稿 《大灰狼开心了》说课稿  一、 说教材  《大灰狼开心了》是我们这个学期教学计划里面高高兴兴主题中的...
《站立式起跑》说课稿 小学四年级体育《站立式起跑》说课稿(精选3篇)  作为一名无私奉献的老师,常常需要准备说课稿,借助说...
重庆小山峡导游词 重庆小山峡导游词  巫山小小三峡是位于大宁河滴翠峡处的支流马渡河上,是长滩峡、秦王峡、三撑峡的总称;...
高中新学期国旗下讲话稿 高中新学期国旗下讲话稿范文(精选6篇)  在充满活力,日益开放的今天,用到讲话稿的地方越来越多,讲话...
小学一年级数学下册《认识时间... 人教版小学一年级数学下册《认识时间》说课稿  一、教材分析  1、教学内容:人教版义务教育课程标准实...
优秀的保国寺导游词 优秀的保国寺导游词  保国寺是我国江南保存最完好的北宋木结构建筑,是国务院公布的第一批全国重点文保单...
广东省厦门植物园导游讲解词 广东省厦门植物园导游讲解词  现在我们来到西大门也就是植物园的主入口,建园后的多次重建,现大门建于1...
英文导游欢迎词 英文导游欢迎词范文  下面是关于英文的导游欢迎词范文,希望对大家有帮助!  英文导游欢迎词范文一  ...
乔家大院的导游词 乔家大院的导游词  导游词是导游人员引导游客观光游览时讲解词,是导游员同游客交流思想,向游客传播文化...
绍兴鉴湖导游词-浙江导游词 绍兴鉴湖导游词-浙江导游词  作为一名专门引导游客、助人为乐的导游,通常需要用到导游词来辅助讲解,导...
长白山天池奇峰导游词 长白山天池奇峰导游词范文  游客朋友们,下面我向大家介绍雄峙长白山山巅,组成长白山宏大壮丽的雄姿,护...