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

相关内容

热门资讯

文科高考志愿个人陈述范文【精... 文科高考志愿个人陈述范文 篇一我一直对文科充满兴趣,因此在选择高考志愿时,我毫不犹豫地选择了文科方向...
历年安徽高考满分作文赏析:勇... 历年安徽高考满分作文赏析:勇于挑战,敢于质疑 篇一勇于挑战,敢于质疑,是一种积极向上的心态和精神品质...
2019高考经典范文大全(经... 2019高考经典范文大全 篇一高考改革:探索多元评价体系随着社会的发展和教育观念的变革,高考改革已经...
高考英语作文加分高级句型【精... 高考英语作文加分高级句型 篇一:如何提高英语写作能力英语写作是高考英语考试的重要组成部分,也是考生们...
高考满分作文好句摘抄【通用3... 高考满分作文好句摘抄 篇一第一篇内容高考是每个学生都无法绕开的一道坎,它是一次考验也是一次机遇。在高...
高考预测作文:期待,生命不合... 高考预测作文:期待,生命不合理是可能的 篇一期待,生命不合理是可能的生命是一个奇妙而不可预测的旅程,...
光头的背后:《非诚勿扰》孟非... 光头的背后:《非诚勿扰》孟非 篇一在中国的相亲节目中,《非诚勿扰》无疑是最受欢迎的一档。而这档节目的...
冲刺高考励志作文【推荐6篇】 冲刺高考励志作文 篇一奋斗的力量高考,是每个学生心中的一块巨石。在这个关键的阶段,每个人都希望能够以...
浙江高考满分作文:人生应读三... 浙江高考满分作文:人生应读三本书 篇一人生应读三本书在我们的一生中,书籍扮演着重要的角色,它们不仅是...
高考满分议论文【精彩6篇】 高考满分议论文 篇一高考满分:是成功的唯一标准吗?高考作为我国教育体制的重要组成部分,一直以来备受争...
北京市高考作文题【推荐3篇】 北京市高考作文题 篇一互联网时代下的人际关系互联网的发展给人们的生活带来了很多便利,但同时也对人际关...
高考满分作文:浅阅读与深阅读... 高考满分作文:浅阅读与深阅读 篇一浅阅读与深阅读在当今信息爆炸的时代,我们每天都面临大量的文字信息。...
高考素材之古诗词中“酒”的名... 高考素材之古诗词中“酒”的名字 篇一古代诗词中,酒是一个常见的题材,它象征着欢乐、快乐和人情味道。下...
江苏高考作文题目:车来车往折... 江苏高考作文题目:车来车往折射社会真理 篇一车来车往 折射社会真理车来车往,车辆穿梭于城市的大街小巷...
浙江高考满分作文:门与路(通... 浙江高考满分作文:门与路 篇一门与路,是生活中不可或缺的元素。门是通往不同世界的通道,而路则是连接一...
高考教室标语(最新3篇) 高考教室标语 篇一高考教室标语对学生的激励作用高考是每个学生都必须面对的一道坎,而高考教室则是他们备...
全国卷一作文【优质3篇】 全国卷一作文 篇一:如何培养孩子的创造力创造力是现代社会对于个体发展的重要要求之一。而培养孩子的创造...
2022年江苏新高考I卷作文... 2022年江苏新高考I卷作文 篇一新高考改革下的多元化教育模式探析 2022年江苏新高考I卷作文 篇...
2022高考作文围棋范文【优... 2022高考作文围棋范文 篇一围棋与我的成长围棋是一门古老而深奥的智力游戏,它给了我许多启示和帮助,...
高考零分作文出:我的共享幸福... 篇一:高考零分作文出:我的共享幸福计划近年来,共享经济在我国发展迅速,各种共享平台如雨后春笋般涌现。...