第二周题解
游泳达人
#include<iostream>
using namespace std;
int main()
{
double x; cin>>x;
double sum=0.0;
int ans=0;
double tmp=2;
while(sum<=x)
{
sum=sum+tmp;
tmp=tmp*0.98;
ans++;
}
cout<<ans<<endl;
return 0;
}
计数问题
#include<iostream>
using namespace std;
int main()
{
long long n,i,x,b,c,t=0;
cin>>n>>x;
for(i=1;i<=n;i++)
{
b=i;
while(b!=0)
{
c=b%10;
b=b/10;
if(c==x) t++;计数器加一;
}
}
cout<<t<<endl;
return 0;
}
巧妙的珠心算
#include<iostream>
#include<cstdio>
using namespace std;
const int M=20005;
int t[M],g[M];
int n,a[105],ans,maxn;
int main(){
cin>>n;
for (int i=1;i<=n;i++){
cin>>a[i];
g[a[i]]=1;
}
for (int i=1;i<n;i++){
for (int j=i+1;j<=n;j++){
t[a[i]+a[j]]++;
maxn=max(maxn,a[i]+a[j]);
}
}
for (int i=1;i<=maxn;i++){
if (t[i]>0&&g[i]) ans++;
}
cout<<ans<<endl;
return 0;
}
拼数
#include<bits/stdc++.h>
using namespace std;
int n,h,delta;
int a[2050][2050],f[2050][2050];
int maxh[2050];
int main(){
scanf("%d%d%d",&n,&h,&delta);
for(int i=1;i<=n;i++){
int x;
scanf("%d",&x);
for(int j=1;j<=x;j++){
int p;
scanf("%d",&p);
a[p][i]++;
}
}
for(int i=1;i<=h;i++){
for(int j=1;j<=n;j++){
if(i>1)f[i][j]=f[i-1][j];
if(i>delta)f[i][j]=max(f[i][j],maxh[i-delta]);
f[i][j]+=a[i][j];
maxh[i]=max(maxh[i],f[i][j]);
}
}
printf("%d",maxh[h]);
return 0;
}
数的计算
#include<cstdio>
using namespace std;
int n,cnt=1;
void func(int x){
for(int i=1;i<=x/2;i++){
cnt++;
func(i);
}
}
int main(){
scanf("%d",&n);
func(n);
printf("%d\n",cnt);
}