题解 | #牛牛变魔术#

满意的数字

https://ac.nowcoder.com/acm/contest/11220/A

B. 观察发现每次操作结束后两个杯子的数一定是偶数,所以奇数直接输出-1就行,发现只要target在两个杯子水杯和总量的两倍以内就能在一次操作内达到 模拟即可

#include<bits/stdc++.h>
using namespace std;
#define int long long
int t;
int a,b,s;
signed main()
{
    cin>>t;
    while(t--){
        cin>>a>>b>>s;
        if(a==s||b==s)
            cout<<0<<endl;
        else{
            if(s%2){
                cout<<-1<<endl;
                continue;
            }
            int sum = (a+b)*2;
            int n = 0;
            while(sum<s)
            {
                sum*=2;
                n++;
            }
            cout<<n+1<<endl;
        }
         
    }
    return 0;
}

别问我为什么交了11次我真的想不通啊

一开始我交的code是这个,死都过不了 有没有大佬看看

WAcode:

#include<bits/stdc++.h>
using namespace std;
#define int long long
int t;
int a,b,s;
signed main()
{
    cin>>t;
    while(t--){
        cin>>a>>b>>s;
        if(a==s||b==s)
            cout<<0<<endl;
        else{
            if(s%2)
               cout<<-1<<endl;
            else{
                if(s%((a+b)*2)==0)
                   cout<<(s/((a+b)*2))<<endl;
                else
                    cout<<(s/((a+b)*2))+1<<endl;
            }
        }
         
    }
    return 0;
}
全部评论
我一开始炸int了,希望有帮助
点赞 回复 分享
发布于 2022-01-14 19:18
试一下这个数据 1809 3015 30144
点赞 回复 分享
发布于 2022-01-14 00:08
两水杯的总量是等比数列增长的,一开始我也是和WAcode那样,后来改成(long long)log2(1.*target/(a+b))+flag才过。
点赞 回复 分享
发布于 2022-01-13 21:19

相关推荐

07-11 11:15
中南大学 Java
好可爱的hr姐姐哈哈哈哈
黑皮白袜臭脚体育生:兄弟们貂蝉在一起,吕布开了
点赞 评论 收藏
分享
机械打工仔:有说的你怀疑一下就行了,直接问也太实诚了
点赞 评论 收藏
分享
评论
6
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务