巴拉巴拉巴拉呼呼呼呼 2021-08-14 16:16 采纳率: 63.6%
浏览 74
已结题

请问一下本题在pta的自主测试是对的,但是提交后是答案错误,哪里需要改一下呀?

乘法口诀数列

输出格式:
在一行中输出数列的前 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 后结束。


// 数据结构13.cpp : 此文件包含 "main" 函数。程序执行将在此处开始并结束。
//

#include <iostream>
#include<cmath>
using namespace std;
int main()
{
    int first;//第一个数
    int second;//第二个数
    int num;//项数
    int show1;//两数乘积所得的数
    cin >> first >> second >> num;
    cout << first << " " << second << " ";
    int show[1001];//存储答案
    show[0] = first;
    show[1] = second;
    int ah = 2;//用来计数
    for (int i = 2;i<num;i++ )
    {
        show1 = first * second;
        if (show1 > 9)
        {
            show[ah] = show1 / 10;
            show[ah + 1] = show1 % 10;
            first = show[i - 1];
            second = show[i];
            if(ah==num-1)
            {cout<<show[ah];
                break;}
            else if(ah<num-2&&ah>=2)
            {cout<<show[ah]<<" "<<show[ah+1]<<" ";}
            else if(ah==num-2)
            {cout<<show[ah]<<" "<<show[ah+1];
            break;}
            
            ah = ah + 2;
            
        }
        else if (show1 <= 9&&show1>=0)
        {
            show[ah] = show1;
            first = show[i-1];
            second = show[i];
            if (ah < num - 1&&ah>=2)
            {
                cout << show[ah] << " ";
            }
            else if(ah==num-1)
            {cout<<show[ah];
            break;}
            ah++;
        }
        
            }
}




  • 写回答

1条回答 默认 最新

  • 诺er~ 2021-08-14 16:25
    关注
    
    #include <iostream>
    #include <cstdio>
    #include <algorithm>
    
    using namespace std;
    
    int n,cnt=2;
    int a[1010];
    
    int main()
    {
        cin>>a[0]>>a[1]>>n;
        for(int i=0;i<n&&cnt<n;i++)
        {
            int t=a[i]*a[i+1];
            if(t<10) a[cnt++]=t;
            else
            {
                a[cnt++]=t/10;
                a[cnt++]=t%10;
            }
        }
        
        for(int i=0;i<n;i++)
        {
            printf("%d",a[i]);
            if(i!=n-1) printf(" ");
        }
        
        return 0;
    }
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

问题事件

  • 系统已结题 8月22日
  • 已采纳回答 8月14日
  • 创建了问题 8月14日

悬赏问题

  • ¥15 安装svn网络有问题怎么办
  • ¥15 Python爬取指定微博话题下的内容,保存为txt
  • ¥15 vue2登录调用后端接口如何实现
  • ¥65 永磁型步进电机PID算法
  • ¥15 sqlite 附加(attach database)加密数据库时,返回26是什么原因呢?
  • ¥88 找成都本地经验丰富懂小程序开发的技术大咖
  • ¥15 如何处理复杂数据表格的除法运算
  • ¥15 如何用stc8h1k08的片子做485数据透传的功能?(关键词-串口)
  • ¥15 有兄弟姐妹会用word插图功能制作类似citespace的图片吗?
  • ¥15 latex怎么处理论文引理引用参考文献