A 素数分布
https://ac.nowcoder.com/acm/contest/2720/A
模拟
#include<bits/stdc++.h>
using namespace std;
int main(){
int t;
while(~scanf("%d",&t)) {
while(t--) {
int n,ans=0;
scanf("%d",&n);
for(int i=2;i<=n;i++) {
bool flag=false;
for(int j=2;j<=sqrt(i);j++) {
if(i%j==0) {
flag=true;
break;
}
}
if(!flag)
ans++;
}
printf("%d\n",ans);
}
}
return 0;
}
B 食物分配
https://ac.nowcoder.com/acm/contest/2720/B
三个人分四分食物,那么当第一小+第二小的食物份量==第一大的食物份量==第二大的食物份量才可以
#include<bits/stdc++.h>
using namespace std;
vector<long long> p;
int main(){
int t;
while(~scanf("%d",&t)) {
while(t--) {
p.clear();
long long ans=0,A,B,C,D;
scanf("%lld%lld%lld%lld",&A,&B,&C,&D);
ans=A+B+C+D;
if(ans%3==0) {
long long sum1=ans/3;
p.push_back(A);
p.push_back(B);
p.push_back(C);
p.push_back(D);
sort(p.begin(),p.end());
if((p[0]+p[1])==sum1&&p[2]==sum1&&p[3]==sum1)
printf("%lld\n",sum1);
else
puts("-1");
} else
puts("-1");
}
}
return 0;
}
C AHUICPC (Easy Version)
https://ac.nowcoder.com/acm/contest/2720/C
Special judge 可以发现字符串的个数和其中字符出现的数目有关,可以选择直接打表
#include<bits/stdc++.h>
using namespace std;
int main(){
int n;
while(~scanf("%d",&n)) {
if(n<10) {
for(int i=1; i<=n; ++i) printf("A");
printf("HUICPC\n");
}
else printf("AAHHHHHUICPC\n");
}
return 0;
}
D 不定方程
https://ac.nowcoder.com/acm/contest/2720/D
GCD
#include<bits/stdc++.h>
using namespace std;
int main(){
int t;
while(~scanf("%d",&t)) {
while(t--) {
long long x,y;
scanf("%lld%lld",&x,&y);
long long sum1=__gcd(x,y);
if(sum1!=1) {
puts("-1");
continue;
}
long long ans1=(x/sum1)*y;
printf("%lld %lld %lld\n",y/sum1,x/sum1,ans1);
}
}
return 0;
}
E 蕊蕊识数
https://ac.nowcoder.com/acm/contest/2720/E
我没有想到这是一个暴力,唯一说的可能是初始值的大数取模操作注意一下,可惜可惜
#include<bits/stdc++.h>
using namespace std;
string s;
bool ok(int p) {
int d=0;
for(int i=0;i<s.size();++i) {
d=d*10+s[i]-'0';
d%=p;
}
return d==0;
}
int main(){
int t;
while(~scanf("%d",&t)) {
while(t--) {
cin>>s;
if(s.size()==1)
printf("2\n");
else {
vector<int> v;
int now=0;
for(int i=0;i<s.size();++i)
now+=s[i]-'0';
v.push_back(now);
while(now>=10) {
int tp=0;
while(now)
tp+=now%10,now/=10;
v.push_back(tp);
now=tp;
}
int ans=0;
for(int i=2; ; ++i) {
int f=ok(i);
int ff=1;
for(int j=0; j<v.size(); ++j) {
if((v[j]%i==0)!=f) {
ff=0;
break;
}
}
if(ff) {
ans=i;
break;
}
}
printf("%d\n", ans);
}
}
}
return 0;
}
F 蕊蕊乘车去上学
https://ac.nowcoder.com/acm/contest/2720/F
概率求期望,直接上公式
#include<bits/stdc++.h>
using namespace std;
int main(){
double a,b;
while(~scanf("%lf%lf",&a,&b)) {
printf("%.2lf\n",(a*a+b*b)/(a+b));
}
return 0;
}
https://ac.nowcoder.com/acm/contest/2720/G
不会待补
H 无尽大军
https://ac.nowcoder.com/acm/contest/2720/H
写了一个搜索然后超时,待补