AtCoder Beginner Contest 280
A - Pawn on a Grid
题意
给出一个 \(H\) 行 \(W\) 列的字符矩阵,输出其中#的个数。
分析
依题意模拟即可。遍历每个字符,如果是#,\(ans\) 就 \(+1\),最后输出 \(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\) 个数每个数与前面的数的差。
分析
依题意模拟。注意第一个数与前面的数的差为第一个数本身。
代码
#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\),求一个数 \(n\),要求 \(n!\) 是 \(k\) 的倍数,输出 \(n\) 的最小值。
- \(k\le10^{12}\)
分析
如果答案小于 \(2\times10^6\),直接枚举。
否则,一定有某个质因子 \(p^k\) 没有被 \(n!\) 完全包含。其必要条件是:\(p\times k\ge 2\times10^6\),但根据数据范围又有 \(p^k\le10^{12}\),
因此,只可能是 \(k=1\) ,才不会产生矛盾。在这种情况下,答案是 \(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;
}

浙公网安备 33010602011771号