21天好习惯第一期—5

2021 ICPC 江西省大学生程序设计竞赛(正式赛)题解

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江西省大学生程序设计竞赛(正式赛)icon-default.png?t=L9C2https://ac.nowcoder.com/acm/contest/21592#question

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值