2 条题解

  • 0
    @ 2024-12-1 12:00:04

    P1070题解

    思路

    我第一眼看到题目,什么鬼!!!

    第二眼,这不就是模拟吗?

    可以先从小到大排序,再把数目较小的兔兔合并

    我真是个天才,哈哈哈哈......

    #include <bits/stdc++.h>
    using namespace std;
    int x,y,z,ans; 
    int main()
    {
    	while(cin>>x>>y>>z)
    	{
    		if((x!=0&&y==0&&z==0)||(x==0&&y!=0&&z==0)||(x==0&&y==0&&z!=0))cout<<"QAQ"<<endl;
    		else
    		{
    			ans=0;
    			while(1)
    			{
    				if(x>y)swap(x,y);
    				if(x>z)swap(x,z);
    				if(y>z)swap(y,z);
    				if(x==0&&y==0)
    					break;
    				ans++;
    				if(x!=0)x--,y--,z++;
    				else x++,y--,z--;
    			}
    			cout<<ans<<endl;
    		}
    	}
        return 0;
    }
    

    20分嘤嘤嘤......

    经过我10000ms的发育,我有了一个天才般的想法

    可以将两个相同数目的兔兔一直合并到0

    搜嘎嘎嘎嘎嘎......

    #include <bits/stdc++.h>
    using namespace std;
    int x,y,z,ans; 
    int main()
    {
    	while(cin>>x>>y>>z)
    	{
    		if((x!=0&&y==0&&z==0)||(x==0&&y!=0&&z==0)||(x==0&&y==0&&z!=0))cout<<"QAQ"<<endl;
    		else
    		{
    			ans=0;
    			while(1)
    			{
    				if(x>y)swap(x,y);
    				if(x>z)swap(x,z);
    				if(y>z)swap(y,z);
    				if(x==0&&y==0)
    					break;
    				ans++;
    				if(x==y)x--,y--,z++;
    				else if(y==z)x++,y--,z--;
    				else if(x!=0)x--,y--,z++;
    				else x++,y--,z--;
    			}
    			cout<<ans<<endl;
    		}
    	}
        return 0;
    }
    

    30分嘤嘤嘤嘤嘤嘤......

    又经过我10000ms的发育,我又有了一个天才般的想法

    CAN倒序排列

    AC代码:

    #include <bits/stdc++.h>
    using namespace std;
    int x,y,z,ans; 
    int main()
    {
    	while(cin>>x>>y>>z)
    	{
    		if((x!=0&&y==0&&z==0)||(x==0&&y!=0&&z==0)||(x==0&&y==0&&z!=0))cout<<"QAQ"<<endl;
    		else
    		{
    			ans=0;
    			while(1)
    			{
    				if(x<y)swap(x,y);
    				if(x<z)swap(x,z);
    				if(y<z)swap(y,z);
    				if(z==0&&y==0)
    					break;
    				ans++;
    				if(x==y)x--,y--,z++;
    				else if(y==z)x++,y--,z--;
    				else if(y!=0)x--,y--,z++;
    				else x++,y--,z--;
    			}
    			cout<<ans<<endl;
    		}
    	}
        return 0;
    }
    

    哈哈哈哈哈哈哈......

    双经过我10000ms的发育,我双有了一个天才般的想法

    找规律

    从小到大排,前两个数的差如果是奇数,则输出最后一个数,否则输出第二个数

    AC代码2号:

    #include <bits/stdc++.h>
    using namespace std;
    int x,y,z; 
    int main()
    {
        while(cin>>x>>y>>z)
        {
    		if((x!=0&&y==0&&z==0)||(x==0&&y!=0&&z==0)||(x==0&&y==0&&z!=0))cout<<"QAQ"<<endl;
    		else
            {
    			if(x>y)swap(x,y);
    			if(x>z)swap(x,z);
    			if(y>z)swap(y,z);
    			if((y-x)%2==0)cout<<y<<endl;
    			else cout<<z<<endl;
    		}
    	}
        return 0;
    }
    

    哈哈哈哈哈哈哈哈哈哈哈......

    小提示:

    要用while读入

    信息

    ID
    101
    时间
    1000ms
    内存
    256MiB
    难度
    8
    标签
    (无)
    递交数
    177
    已通过
    33
    上传者