算法竞赛康复训练-Day1
半吊子OIer的康复训练系列
# P1421 小玉买文具
#include<bits/stdc++.h>
using namespace std;
int main()
{
int a, b;
cin >> a >> b;
double tot = a + b / 10.0;
int ans = floor(tot / 1.9);
cout << ans << endl;
return 0;
}# P1909 买铅笔
#include<bits/stdc++.h>
using namespace std;
int n,a1,a2,a3,b1,b2,b3,ans1,ans2,ans3;
int main() {
scanf("%d",&n);
scanf("%d%d",&a1,&b1);
scanf("%d%d",&a2,&b2);
scanf("%d%d",&a3,&b3);
ans1=ceil(n*1.0/a1)*b1;
ans2=ceil(n*1.0/a2)*b2;
ans3=ceil(n*1.0/a3)*b3;
printf("%d\n",min({ans1,ans2,ans3}));
return 0;
}# P1089 津津的储蓄计划
模拟即可:
#include <bits/stdc++.h>
using namespace std;
int n=0,s=0,y=0;
int main() {
for(int i=1;i<=12;i++) {
cin>>y;
n+=300-y;
if(n<0) {
cout<<"-"<<i<<endl;
return 0;
}
while(n>=100) {
n-=100;
s+=100;
}
}
cout<<s*1.2+n<<endl;
return 0;
}#P1085 不高兴的津津
#include <bits/stdc++.h>
using namespace std;
int a[8],n,m,maxn=-1,maxm=-1;
int main() {
for(int i=1;i<=7;i++) {
cin>>n>>m;
a[i]=n+m;
if(a[i]>8 and a[i]>maxn) {
maxn=a[i];
maxm=i;
}
}
if(maxn==-1) cout<<0;
else cout<<maxm<<endl;
return 0;
}如果没有不开心的日子那么循环条件不成立,maxn依然是-1,否则maxm被设置为不开心的那天并cout出来
#P035 级数求和
#include <bits/stdc++.h>
using namespace std;
int k;
int ans=0;
double n2=0, sum=0;
int main() {
cin>>k;
while(1) {
n2++;
sum+=1/n2;
ans++;
if(sum>k) {
cout<<ans<<endl;
return 0;
}
}
return 0;
}用一个while循环,当sum>k时就打印出来;
#P980 计数问题
#include <bits/stdc++.h>
using namespace std;
int main() {
long long n,i,x,b,c,t=0;
cin>>n>>x;
for(int i=0;i<=n;i++) {
int b=i;
while(b!=0) {
c=b%10;
b=b/10;
if(c==x) t++;
}
}
cout<<t<<endl;
return 0;
}个人的理解就是c=b%10然后做一个判断,同时b=b/10去掉个位数后再取模再做判断;
#P1014 Cantor表
这道题看不懂,只能开挂了QAQ
算法竞赛康复训练-Day1
https://zer0ptr.github.io/2025/12/06/oi-big-hand/