pta L1的句号-------------L1-080 乘法口诀数列
L1到此已经刷完了,接下来复盘一下并且明天开始巩固和接触数据结构即L2的题目了;
L1-80的题目链接:https://pintia.cn/problem-sets/994805046380707840/problems/1386335159927652359
题目是很浅显易懂的,并且这道题的思路也不难,在根本上讲是一个模拟,反而这种题对我个人而言做起来比字符串的处理轻松不少;
我们可以采取这样的方式来处理这个题目:
用两个变量i,j来表示数组,i表示的是下标的变化,而j表示的是当前的进度,这来,就完完全全避免了出现数组下标错位的情况;
而这道题还需要注意的是对于出现乘积为10以上的数的处理,其实也很简单,用常规的分解就可以了,顺带储存下标
不得不说,L1这算是给我画上了一个圆满的句号,就此,L1的题目就可以告一段落了

接下来就安心复习和学习数据结构啦;
Talk is cheap. Show me the code.
1 #include<bits/stdc++.h> 2 using namespace std; 3 int a1,a2,n; 4 int a[1010]; 5 int main() 6 { 7 std::ios::sync_with_stdio(false); 8 cin>>a1>>a2>>n; 9 a[1]=a1; 10 a[2]=a2; 11 int j=3;//从下一个开始,更好处理和储存 12 for(register int i=3;i<=n;j++) 13 { 14 int temp=a[j-1]*a[j-2];//定义乘积,注意,下标是j,这样避免下标错乱 15 int temp1=temp;//防止乘积被破坏 16 if(temp<10)//乘积小于10直接存 17 { 18 a[i++]=temp;//存值并且下标加一 19 } 20 else 21 { 22 while(temp1)//大于等于10的情况,即不是1位数 23 { 24 if(temp1<10) 25 { 26 a[i++]=temp%10;//最后只剩个位数的时候才存 27 } 28 else 29 { 30 a[i++]=temp/10;//先存高位数 31 } 32 temp1=temp1/10; 33 } 34 } 35 } 36 for(register int k=1;k<=n;k++) 37 { 38 cout<<a[k]; 39 if(k<n) 40 cout<<" "; 41 } 42 return 0; 43 }
本文来自博客园,作者:江上舟摇,转载请注明原文链接:https://www.cnblogs.com/LQS-blog/p/16161272.html

浙公网安备 33010602011771号