目录
A - Pawn on a Grid
题意
给出一个
H
H
H 行
W
W
W 列的字符矩阵,输出其中#
的个数。
分析
依题意模拟即可。遍历每个字符,如果是#
,
a
n
s
ans
ans 就
+
1
+1
+1,最后输出
a
n
s
ans
ans。
代码
#include<bits/stdc++.h>
using namespace std;
int h,w,ans=0;
int main()
{
cin>>h>>w;
for(int i=1;i<=h;i++)
{
for(int j=1;j<=w;j++)
{
char c;
cin>>c;
if(c=='#') ans++;
}
}
cout<<ans<<endl;
return 0;
}
B - Inverse Prefix Sum
题意
给出 n n n 个数,输出这 n n n 个数每个数与前面的数的差。
分析
依题意模拟。注意第一个数与前面的数的差为第一个数本身。
代码
#include<bits/stdc++.h>
using namespace std;
int n;
long long s[15],s2[15];
int main()
{
cin>>n;
for(int i=1;i<=n;i++)
{
cin>>s[i];
s2[i]=s[i]-s[i-1];
}
for(int i=1;i<=n;i++) cout<<s2[i]<<' ';
return 0;
}
C - Extra Character
题意
给出两个字符串,输出这两个字符串第一个不同的字母的位置。
分析
依次遍历每个字符,如果这两个字符不同,输出所在的位置,然后结束程序即可。
代码
#include<bits/stdc++.h>
using namespace std;
string s,s2;
int main()
{
cin>>s>>s2;
for(int i=0;i<s2.size();i++)
{
if(s[i]!=s2[i])
{
cout<<i+1<<endl;
return 0;
}
}
return 0;
}
D - Factorial and Multiple
题意
- 给出一个数 k k k,求一个数 n n n,要求 n ! n! n! 是 k k k 的倍数,输出 n n n 的最小值。
- k ≤ 1 0 12 k\le10^{12} k≤1012
分析
如果答案小于 2 × 1 0 6 2\times10^6 2×106,直接枚举。
否则,一定有某个质因子 p k p^k pk 没有被 n ! n! n! 完全包含。其必要条件是: p × k ≥ 2 × 1 0 6 p\times k\ge 2\times10^6 p×k≥2×106,但根据数据范围又有 p k ≤ 1 0 12 p^k\le10^{12} pk≤1012,
因此,只可能是 k = 1 k=1 k=1 ,才不会产生矛盾。在这种情况下,答案是 p p p。
代码
#include<bits/stdc++.h>
using namespace std;
int main()
{
long long k,g;
cin>>k;
for(long long i=2;i<=2000000;i++){
k/=__gcd(k,i);
if(k==1)
{
cout<<i<<endl;
return 0;
}
}
cout<<k<<endl;
return 0;
}
推荐
这是我的洛谷号:https://www.luogu.com.cn/user/880187
这是我的cnblogs:https://www.cnblogs.com/PineappleSummer
这是我的csdn号:https://blog.csdn.net/PineappleSummer
求个关注qwq