[GESP202409 二级] 数位之和 AND 小杨的 N 字矩阵 题目解法

目录

数位之和

题目描述

 解题思路

代码实现

小杨的 N 字矩阵

题目描述

解题思路

图形怎么输出

代码实现

无注释满分代码

问题1

代码如下:

问题2

代码如下:


数位之和

题目描述

见以下网址:

B4036 [GESP202409 二级] 数位之和 - 洛谷 | 计算机科学教育新生态 (luogu.com.cn)

 解题思路

1.输入n表示有n个数。

2.一边输入数字一边判断这个数是不是美丽数字。

3.一个数的每一位的和可以用剥洋葱法求出,再判断是不是7 的倍数。

4.输出。(这个比较重要)

代码实现

#include<bits/stdc++.h>
using namespace std;
long long a,i,n,sum;
int main()
{
	cin>>n;
	for(i=1;i<=n;i++)    //循环n次
	{
		cin>>a;    //输入a
		sum=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.输出前面的‘-’,再输出‘+’(这个‘+’需要特判),最后输出后面的‘-’。

代码实现

#include<bits/stdc++.h>
using 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

代码如下:

#include<bits/stdc++.h>
using namespace std;
long long a,i,n,sum;
int main()
{
	cin>>n;
	for(i=1;i<=n;i++)
	{
		cin>>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

代码如下:

#include<bits/stdc++.h>
using 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;
}

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值