P2818:
今天刷的这道题看起来挺水实际却不简单
先说一下20分代码吧,只要看懂题这20分就是白送的:
#include <iostream>//头文件
using namespace std;
int main()
{
long long int x,y;//定义
cin>>x>>y;
if(y%x==0)//审题
cout<<x;
else
cout<<y%x;输出
return 0;
} 但是20分不足以满足我的要求,于是就开始思考以为要高精(吓死本人了),后来发现了一个规律,以二位数举例
一个二位数%另一个数就是先把这个数的十位*10%哪一个模数,加上个位数%哪一个模数再把和模哪一个模数。比如说,
59%5=(5x10%5+9%5)%5=(0+4)%5=4%5=4
这个规律显然对三位数以及更大的数也好用,于是就得到了代码:
#include <bits/stdc++.h>//万能头文件
#define For for(int i=0;i<la;i++)//省一点长度(其实没啥意义)
using namespace std;//常规
int s[1010]={0};//清不清零都无所谓
int main()//主函数
{
string a;//用字符串读入
long r;//定义模数
cin>>r>>a;//输入
short la=a.length();//在前面定义可以省时间
long long ans=0;//一定要清零!!!
For
s[i]=a[i]-'0';//把字符转化为数,并存入数组
For
ans=(ans*10+s[i])%r;//把前面计算的公式引进来
if(!ans)//注意审题(只要审了,就知道要怎么做)
cout<<r;
else
cout<<ans;//直接输出即可
return 0;//华华丽丽的结束
} 希望对你有帮助,但切勿抄袭!
P1234:
这道题其实很水(虽然写的是普及,到我估计也就普及-。)
此题思路:判断他的上下左右是否为HEHEH(但需要枚举),并且要写两个左右一个,上下一个。
最后计数。
注意事项;
1,是A-3和B-3,否则会爆。
2,要清零
3,是CHAR型数组。
#include <bits/stdc++.h>
//万能头文件
using namespace std;
int main()
{
//主函数
int a,b,jsq=0;//清零
cin>>a>>b;//输入长宽
char q[5019][5019];//定义
for(int i=1;i<=a;i++)//两层循环
{
for(int j=1;j<=b;j++)
{
cin>>q[i][j];//输入字符
}
}
for(int i=1;i<=a;i++)//两层循环
{
for(int j=1;j<=b-3/*防止会爆*/;j++)//枚举字符的i-1 j,i-2 j和i+1 j,i+2 j,和他自己(i j)
{
if((q[i][j]=='h'&&q[i][j+1]=='e'&&q[i][j+2]=='h'&&q[i][j+3]=='e')||(q[i][j]=='e'&&q[i][j+1]=='h'&&q[i][j+2]=='e'&&q[i][j+3]=='h'))//判断是否为HEHEH
{
jsq++; //计数器加一
}
}
}
for(int i=1;i<=a-3/*防止会爆*/;i++)//两层循环
{
for(int j=1;j<=b;j++)//枚举字符的i j-1,i j+1,和 i j+2,i j-2和它本身(i j)
{
if((q[i][j]=='h'&&q[i+1][j]=='e'&&q[i+2][j]=='h'&&q[i+3][j]=='e')||(q[i][j]=='e'&&q[i+1][j]=='h'&&q[i+2][j]=='e'&&q[i+3][j]=='h'))//判断是否为HEHEH
{
jsq++; //计数器加一
}
}
}
cout<<jsq;//输出
return 0;//结束
} //珍惜账号,远离抄袭
//点个赞吧☺

京公网安备 11010502036488号