在倒推的过程中,可以用变量 n 一直来记录这一天猴子吃桃子前的桃子数量,第四天就是输入的 n 值,那么倒推第三天的桃子数应该是 (n+1)*2 ,直接将这个值又赋值给 n(n = (n+1)*2;),这样的话第三天的桃子数量仍然记录在变量 n 中。接着倒推第二天、第一天,仍然用这样的方法。在倒推的过程中,通过连续的赋值语句不断修改变量 n 的值,让 n 一直记录的是倒推到的天数的桃子数量,也就是用 n 来持续“追踪”倒推过程中每天的桃子数量。
Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
#include<iostream>
usingnamespace std;
intmain()
{
int n;
cin>>n; //第4天桃子数
n = (n+1)*2; //第3天桃子数,仍然保存在n中
n = (n+1)*2; //第2天桃子数,仍然保存在n中
n = (n+1)*2; //第1天桃子数,仍然保存在n中
cout<<n<<endl;
return 0;
}
#include<iostream>
using namespace std;
int main()
{
int n;
cin>>n; //第4天桃子数
n = (n+1)*2; //第3天桃子数,仍然保存在n中
n = (n+1)*2; //第2天桃子数,仍然保存在n中
n = (n+1)*2; //第1天桃子数,仍然保存在n中
cout<<n<<endl;
return 0;
}
#include<iostream>usingnamespace std;int main(){int n;
cin>>n;//第4天桃子数
n =(n+1)*2;//第3天桃子数,仍然保存在n中
n =(n+1)*2;//第2天桃子数,仍然保存在n中
n =(n+1)*2;//第1天桃子数,仍然保存在n中
cout<<n<<endl;return0;}
#include<iostream>
using namespace std;
int main()
{
int a,b,c,n;
cin>>n;
a = b = c = n/3; //结束后三人钱数都是n/3
//逆推丙分钱前三人钱数
//对于甲来说,他从丙那里拿到了和他已有钱相等的钱数,两份相加是a
//那么在丙分钱之前,甲的钱数应该是a/2。乙的情况类似。
a /= 2; //重新赋值a,赋值后a就是丙分钱前甲的钱数
b /= 2;
c = n-a-b; //丙分钱前丙的钱数是n-a-b.也可以用 c+=a+b;
//逆推乙分钱前三人钱数
a /= 2;
c /= 2;
b = n-a-c; //也可以用 b+=a+c;
//逆推甲分钱前三人钱数
b /= 2;
c /= 2;
a = n-b-c; //也可以用 a+=b+c;
cout<<a<<" "<<b<<" "<<c<<endl;
return 0;
}
#include<iostream>usingnamespace std;int main(){int a,b,c,n;
cin>>n;
a = b = c = n/3;//结束后三人钱数都是n/3//逆推丙分钱前三人钱数//对于甲来说,他从丙那里拿到了和他已有钱相等的钱数,两份相加是a//那么在丙分钱之前,甲的钱数应该是a/2。乙的情况类似。
a /=2;//重新赋值a,赋值后a就是丙分钱前甲的钱数
b /=2;
c = n-a-b;//丙分钱前丙的钱数是n-a-b.也可以用 c+=a+b; //逆推乙分钱前三人钱数
a /=2;
c /=2;
b = n-a-c;//也可以用 b+=a+c; //逆推甲分钱前三人钱数
b /=2;
c /=2;
a = n-b-c;//也可以用 a+=b+c;
cout<<a<<" "<<b<<" "<<c<<endl;return0;}