1.跑步训练
法一:
#include <iostream>
#include <cstring>
#include <cstdio>
#include <algorithm>
#include <cmath>
#define hh ios::sync_with_stdio(false),cin.tie(0),cout.tie(0);
typedef long long LL;
using namespace std;
/*
总共有10000体力,把跑步和休息看完一个循环
一个循环消耗600-300=300的体力,时间+600s,
用9400/300=31.333不能刚好消耗完
即最后一次跑步不能跑完60s,要按1s消耗10体力来算
*/
int main()
{
LL x=10000,T=0;
while(1)
{
x=x-300;
T=T+120;
if(x<600)//说明到了最后一个跑步阶段
break;
}
while(x>0)
{
x=x-10;
T++;
}
cout<<T<<endl;
return 0;
}
法二:模拟
#include <iostream>
#include <cstring>
#include <cstdio>
#include <algorithm>
#include <cmath>
#define hh ios::sync_with_stdio(false),cin.tie(0),cout.tie(0);
typedef long long LL;
using namespace std;
/*
总共有10000体力,把跑步和休息看完一个循环
一个循环消耗600-300=300的体力,时间+600s,
用9400/300=31.333不能刚好消耗完
即最后一次跑步不能跑完60s,要按1s消耗10体力来算
*/
int main()
{
LL HP=10000,T=0;
while(1)
{
//大于600才能完整跑1min
if(HP>=600)
{
HP=HP-600;
T=T+60;
}
//小于600跳出循环,1s1s算体力
else if(HP<600) break;
//只有体力大于0才能休息
if(HP>0)
{
HP=HP+300;
T=T+60;
}
}
//1s1s的算
while(HP>0)
{
HP=HP-10;
T++;
}
cout<<T<<endl;
return 0;
}
2.纪念日
答案:52038720
法一:
用Excel
法二:
判断是否闰年
公历年份是4的倍数,且不是100的倍数,为普通闰年。公历年份是整百数,且必须是400的倍数才是世纪闰年。
1、普通闰年:公历年份是4的倍数的,一般是闰年。(如2004年就是闰年);
2、世纪闰年:公历年份是整百数的,必须是400的倍数才是闰年(如1900年不是世纪闰年,2000年是世纪闰年)。
#include <iostream>
#include <cstring>
#include <cstdio>
#include <algorithm>
#include <cmath>
#define hh ios::sync_with_stdio(false),cin.tie(0),cout.tie(0);
typedef long long LL;
using namespace std;
int day(int y)
{
if((y%4==0&&y%100!=0)||y%400==0)
return 366;
return 365;
}
int main()
{
hh;
LL sum=0;
/*
这里1921年7月后的时间被我挪算到2020年,7月后不影响闰年,这样2020年就能计算一整年
即从1922算到2020年,补多了22天,减去22天
*/
for(int i=1922;i<=2020;i++)
sum=sum+day(i);
sum=sum-22;
cout<<sum<<endl;
cout<<sum*24*60<<endl;
return 0;
}
3.合并检测
#include <iostream>
#include <cstring>
#include <cstdio>
#include <algorithm>
#include <cmath>
#define hh ios::sync_with_stdio(false),cin.tie(0),cout.tie(0);
typedef long long LL;
using namespace std;
int sum=0,min1=1e8,res=0;
int main()
{
//假设该城有100个人,1人新冠
for(int k=2; k<=100; k++)
{
//可以恰好分好组
if(100%k==0)
{
sum=(100/k)+k;
}
//不能恰好分组
else if(100%k!=0)
{
sum=(100/k)+1+k;
}
if(sum<min1)
{
min1=sum;
res=k;
}
}
cout<<res<<endl;
return 0;
}
D.REPEAT 程序
打开prog.txt
ctrl+H打开文本替换(相信会python的朋友到这一步应该恍然大悟了)
将“REPEAT ”引号括起的内容全部替换为for _ in range(0,
将:全部替换为):
在代码末尾加上一行print(A)
用IDEL运行一遍
得出结果241830
F.整除序列
#include <iostream>
#include <cstring>
#include <cstdio>
#include <algorithm>
#include <cmath>
#define hh ios::sync_with_stdio(false),cin.tie(0),cout.tie(0);
typedef long long LL;
using namespace std;
LL n;
int main()
{
hh;
cin>>n;
while(n>0)
{
cout<<n<<" ";
n/=2;
}
cout<<endl;
return 0;
}
G.解码
#include <iostream>
#include <cstring>
#include <cstdio>
#include <algorithm>
#include <cmath>
#define hh ios::sync_with_stdio(false),cin.tie(0),cout.tie(0);
typedef long long LL;
using namespace std;
int main()
{
char c,bc;
//!!!!一定要用()括住c=getchar()!!!否则不显示
while((c=getchar())!='\n')
{
if((c>='a'&&c<='z')||(c>='A'&&c<='Z'))
{
bc=c;
cout<<c;
}
else if(c>='0'&&c<='9')
{
int n=c-'0';
for(int i=0; i<n-1; i++)
cout<<bc;
}
}
return 0;
}
H.走方格
#include <iostream>
#include <cstring>
#include <cstdio>
#include <algorithm>
#include <cmath>
#define hh ios::sync_with_stdio(false),cin.tie(0),cout.tie(0);
typedef long long LL;
using namespace std;
const int N=40;
int n,m;
int dp[N][N];//dp[n][m]表示(1,1)点到(n,m)点的不同方案数
int main()
{
cin>>n>>m;
dp[1][1]=1;
for(int i=1;i<=n;i++)
{
for(int j=1;j<=m;j++)
{
if(i==1&&j==1) continue;
if(i%2!=0||j%2!=0)
dp[i][j]=dp[i-1][j]+dp[i][j-1];
}
}
cout<<dp[n][m]<<endl;
return 0;
}
I.整数拼接
纯纯的暴力
#include <iostream>
#include <cstring>
#include <cstdio>
#include <algorithm>
#include <cmath>
#define hh ios::sync_with_stdio(false),cin.tie(0),cout.tie(0);
typedef long long LL;
using namespace std;
const int N=1e5+5;
LL n,K,res=0;
LL A[N];
LL bit(LL x)
{
int q=0;
while(x)
{
q++;
x=x/10;
}
return q;
}
bool check(LL a,LL b)
{
LL w=bit(b);
LL sum=a*pow(10,w)+b;
cout<<sum<<endl;
if(sum%K==0)
{
return true;
}
else return false;
}
int main()
{
cin>>n>>K;
for(LL i=0;i<n;i++) cin>>A[i];
for(LL i=0;i<n;i++)
{
for(LL j=0;j<n&&j!=i;j++)
{
if(check(A[i],A[j]))
{
res++;
}
}
}
cout<<res<<endl;
return 0;
}
最后一个暴力不会爆吗?
只能拿50分,我是业余的,暴力混点分