9.4刷题

f52554190ec74c4092cda8717a43a082.png第一题,普及-,分糖果,初步浏览题目发现,如果L与R的差值>=n,那么这位小朋友一定能拿走n-1块糖果作为奖励(因为这个区间一定含有一个n的倍数,让这个倍数-1就行),如果区间长度<n,那么在分类讨论一下就行,这题就是考数学逻辑的,没什么特别之处。

而且我的分类讨论也只是写一步看一步,思路不是特别清晰,只是做到最后发现有几种情况可以合并到前面的情况里,所以代码也比较简洁(主要是端点与n的倍数重合的情况相对麻烦)

#include<bits/stdc++.h>
using namespace std;
#define  ll long long
ll n,l,r;
int main()
{
    cin>>n>>l>>r;
    if((r-l)>=n)
    cout<<n-1;
    else
    {
        ll num1=(l/n)*n;
        ll num2=num1+n;
        ll num3=num2+n;
        if(r<num2)
            cout<<r-num1;
        else if(num2==r)
        {
            if(r!=l)
            cout<<n-1;
            else
            cout<<0;
        }
        else //   r介于num2与num3
            cout<<n-1;
    }
    return 0;
}

第二题 ,普及-,解密,题目比较短,爽!

aa00196ca18747698429df5decc7b72f.png

经分析可知是一个纯数学题,很简单,稍微算一下就可以了。

代码如下:

#include<bits/stdc++.h>
using namespace std;
#define  ll long long
ll n,e,d,k,p,q;
int main()
{
    cin>>k;
    while(k--)
    {
        cin>>n>>e>>d;
        ll sum=n+2-e*d;
        if(sum<=0)
        cout<<"NO"<<endl;
        else
        {
            ll diff2=n*n+4-2*n*e*d-4*e*d+e*e*d*d;
            ll diff=sqrt(diff2);
            if(diff*diff!=diff2)
            cout<<"NO"<<endl;
            else
            {
                p=(sum+diff)/2;
                q=sum-p;
                if(p>0&&q>0)
                {
                    if(p>q)
                    {
                        ll temp=p;
                        p=q;
                        q=temp;
                    }
                    cout<<p<<' '<<q<<endl;
                }
                else
                cout<<"NO"<<endl;
            }
        }
    }
    return 0;
}

洗澡去哩~~

 

今日日记~

怎么说呢 今天过得很舒服。早上程序设计看懂了学长的SAT求解代码,现在前进的目标总算是有啦!也就是说应该在也不会有碌碌无为的情况发生了~~下面就是查资料 添加新的求解策略,然后下周再改数独。

下午的习概课一直在看SAT的硕士论文,略懂一二,但是没代码实现,有点纸上谈兵的感觉。最后还是在github上找到了相关代码,明天程序设计课上跑一下试试😆。

最后一节离散课老师长得好年轻!感觉就像普通的大学生,不像是18年毕业的硕士啊(怎么会有人越长越年轻啊啊啊啊啊啊啊)离散课听的也很舒服,做了一些笔记,感觉学习也是步入正轨了哈哈😄

晚上去东操练手语了,认识了一些新朋友,不过我感觉我融入不了这个家庭,有点难绷,总的来说这学期不是很想再拓展新的人际关系了。

明天还要打数模哩!加油!

美好的一天呐😊

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值