目录
数位之和
题目描述
见以下网址:
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;
}
最后自己想一想怎么输出前面的‘-’和后面的‘-’。