[GESP202409 二级] 数位之和 AND 小杨的 N 字矩阵 题目解法_b4037 [gesp202409 二级] 小杨的 n 字矩阵
目录
数位之和
题目描述
解题思路
代码实现
小杨的 N 字矩阵
题目描述
解题思路
图形怎么输出
代码实现
无注释满分代码
问题1
代码如下:
问题2
代码如下:
数位之和
题目描述
见以下网址:
B4036 [GESP202409 二级] 数位之和 - 洛谷 | 计算机科学教育新生态 (luogu.com.cn)
解题思路
1.输入n表示有n个数。
2.一边输入数字一边判断这个数是不是美丽数字。
3.一个数的每一位的和可以用剥洋葱法求出,再判断是不是7 的倍数。
4.输出。(这个比较重要)
代码实现
#includeusing namespace std;long long a,i,n,sum;int main(){cin>>n;for(i=1;i>a; //输入asum=0; //计数器重置(千万不能忘)while(a>0) //剥洋葱法{sum+=a%10; //sum=sum+a%10; 这句代码就是取出这个数的个位a/=10; //扔掉个位,十位变个位}if(sum%7==0) cout<<\"Yes\"<<endl; //判断是不是7的倍数else cout<<\"No\"<<endl;}return 0;}
在输出时一定要看清输出的字母的大小写,最后还要有换行。
剥洋葱法
如:
输入 12
sum+=2;
12/10==1;
sum+=1;
输出 sum==3;
注意,变量为int 的时候舍弃小数点后面的。
小杨的 N 字矩阵
题目描述
见以下网址:
B4037 [GESP202409 二级] 小杨的 N 字矩阵 - 洛谷 | 计算机科学教育新生态 (luogu.com.cn)
解题思路
1.就是输入m比较简单。
2.输出这个图形。
图形怎么输出
1.每行的首个字母和末尾字母都是 ’+‘ 。
2.除了第一行和最后一行,每行中间有一个‘+’。
3.输出前面的‘-’,再输出‘+’(这个‘+’需要特判),最后输出后面的‘-’。
代码实现
#includeusing namespace std;long long m,i,j;int main(){cin>>m; //输入m,表示 m 行 m 列for(i=1;i<=m;i++) //枚举每一行{cout<<\'+\'; //每一行首位都有‘+’for(j=2;j<i;j++) //输出前面的‘-’{cout<<\'-\'; //不能带换行,这一行没结束}if(i!=1&&i!=m) cout<<\'+\'; //这里需要特判行数是1或m的情况for(j=1;j<m-i;j++) //输出后面的‘-’{cout<<\'-\'; //不能带换行,这一行没结束}cout<<\'+\'<<endl; //每一行末尾都有‘+’,记住要换行不能忘}return 0;}
无注释满分代码
问题1
代码如下:
#includeusing namespace std;long long a,i,n,sum;int main(){cin>>n;for(i=1;i>a;sum=0;while(a>0){sum+=a%10;a/=10;}if(sum%7==0) cout<<\"Yes\"<<endl;else cout<<\"No\"<<endl;}return 0;}
问题2
代码如下:
#includeusing namespace std;long long m,i,j;int main(){cin>>m;for(i=1;i<=m;i++){cout<<\'+\';for(j=2;j<i;j++){cout<<\'-\';}if(i!=1&&i!=m) cout<<\'+\';for(j=1;j<m-i;j++){cout<<\'-\';}cout<<\'+\'<<endl;}return 0;}
最后自己想一想怎么输出前面的‘-’和后面的‘-’。