1.B—Continued Fraction
题解:给出两个数a,b之间大的数a去除小的数b,然后记录a除以b的值,再将b赋给a,a除以b的余赋给b。
AC代码如下:
#include <bits/stdc++.h>
using namespace std;
int main()
{
int t;
cin>>t;
while(t--)
{
int x,y;
cin>>x>>y;
vector<int> ans;
while(y)
{
ans.push_back(x/y);
int temp=x;
x=y;
y=temp%y;
}
cout<<ans.size()-1<<" ";
for(int i=0;i<ans.size();i++)
{
cout<<ans[i]<<" ";
}
cout<<endl;
}
}
2.K—Many Littles Make a Mickle
题解:一个N层高的楼第 i 层有 i * i 个房间,每个房间可以住M个人,要求总共可以住多少个人,可以写个for循环从1到N,统计总共有多少个房间在乘上M就OK了。
AC代码如下:
#include <bits/stdc++.h>
using namespace std;
int main()
{
int t;
cin>>t;
while(t--)
{
int n,m;
cin>>n>>m;
int sum=0;
for(int i=1;i<=n;i++)
{
sum+=i*i;
}
cout<<sum*m<<endl;
}
}
3.H—Hearthstone So Easy
题解:多写几个例子可以发现,只要第一轮先手没有让后手血量低于0(即第一轮先手没法弄死后手)则先手就赢不了了。这题有个坑就是数据n=1的时候,所以要写个特判就可以AC了。
AC代码如下:
#include <bits/stdc++.h>
using namespace std;
int main()
{
int t;
cin>>t;
int n,k;
while(t--)
{
cin>>n>>k;
if(n==1)
{
cout<<"freesin"<<endl;
continue;
}
if(n>k+1)
cout<<"freesin"<<endl;
else
cout<<"pllj"<<endl;
}
}
4.L—It Rains Again。
此题要用到差分数数组感兴趣的可以了解一下。
AC代码如下:
#include <bits/stdc++.h>
using namespace std;
const int N=1000005;
int main()
{
int n;
int k[N];
memset(k,0,sizeof(k));
int x1,x2,y1,y2;
while(n--)
{
cin>>x1>>y1>>x2>>y2;
k[x1+1]+=1;
k[x2+1]-=1;
}
int ans=0;
for(int i=1;i<=1000000;i++)
{
k[i]=k[i-1]+k[i];
if(k[i])
ans++;
}
cout<<ans<<endl;
return 0;
}
2021江西省大学生程序设计竞赛(正式赛)https://ac.nowcoder.com/acm/contest/21592#question