> 技术文档 > [GESP202409 二级] 数位之和 AND 小杨的 N 字矩阵 题目解法_b4037 [gesp202409 二级] 小杨的 n 字矩阵

[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;}

最后自己想一想怎么输出前面的‘-’和后面的‘-’。