3 条题解

  • 0
    @ 2024-7-18 22:39:45
    x = int(input())
    a = x//3#分完的值
    b = x//3#分完的值
    c = x//3#分完的值
    a = a//2
    b = b//2
    c = a+b+c
    #第三次分钱
    #第二次分钱
    #第一次分钱
    print(a,b,c)
    

    我只提示到这儿 用逆推!!! 用逆推!!!

    • 0
      @ 2023-10-23 13:25:03

      使用倒推法(逆序)!!!乘法变除法 减法变加法 模拟出来就行了

      image

      • 0
        @ 2023-10-23 13:15:47

        题解来自:知乎网友 【杨宗霖】

        样例数据 x=24 甲乙丙三人原来的钱数为 13 7 4

        不要设方程 不要设方程 不要设方程

        使用倒推法(逆序)!!!从最后结果入手,按反向顺序,分步骤推算出每次分钱每个人的钱数

        三次分前后 每个人的钱数一样 就是x/3 = 24/3 =8 每个人8块钱

        设 int a,b,c 为甲乙丙三个人的钱数 a=8 b=8 c=8

        题目有个隐藏信息 甲分钱给乙、丙两人,所分给的数与各人(已有数相同)

        意思就是:乙原有的钱乘以2=乙第一次分钱的数 丙原有的钱乘以2=丙第一次分钱的数

        后面2次的分法也一样 所分给的数与各人(已有数相同) 就是双倍钱


        分钱次数 甲a 乙b 丙c 谁分
        最后 8
        三次结果 丙c=24-甲a-乙b
        三次分钱 4*2 24-8-8 丙c
        二次结果 4 16 乙b=24-甲a-丙c
        二次分钱 2*2 24-4-16 8*2 乙b
        一次结果 2 14 8 甲a=24-乙b-丙c
        一次分钱 24-14-8 7*2 4*2 甲a
        原始 13 7 4
        #include<iostream>
        using namespace std;
        int x;
        int main () {
        	cin>>x;
        	int a=x/3,b=x/3,c=x/3;
        	a=a/2;
        	b=b/2;
        	c=a+b+c;
        	a=a/2;
        	c=c/2;
        	b=b+a+c;
        	b=b/2;
        	c=c/2;
        	a=a+b+c;
        	cout<<a<<" "<<b<<" "<<c;
        	return 0;
        }
        
        • 1

        信息

        ID
        48
        时间
        1000ms
        内存
        64MiB
        难度
        5
        标签
        递交数
        37
        已通过
        17
        上传者