每日一题 2022/11/26

7-197 乘法口诀数列

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

输入格式:

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

输出格式:

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

输入样例:

2 3 10

输出样例:

2 3 6 1 8 6 8 4 8 4

 思路:由于两个10以内的数字相乘最多只是二位数,所以只需要考虑得出的结果是一一位数还是二位数就可以了,因为是固定的两个两个相乘往前递推的,所以需要单独用一个变量来作存储数组的角标,一位数就++两位数就加2就可以了。

#include<stdio.h>
int main()
{
    int i,j,k,a1,a2,x,n,num[2000]={0};
    scanf("%d %d %d",&a1,&a2,&n);
    num[0]=a1,num[1]=a2;
    for(i=0,j=0,k=2;i<n-2;i++)//最多做n-2次运算
    {
        x=num[j]*num[j+1];
        if(x/10)//二位数
        {
            num[k]=x/10;
            num[k+1]=x%10;
            k=k+2;
        }
        else//一位数
        {
            num[k]=x;
            k++;
        }
        j++;
    }
    for(i=0;i<n;i++)
    {
        printf("%d",num[i]);
        if(i!=n-1) printf(" ");
    }
    return 0;
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

RefrainC.C.

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值