P1005【培训题】朋友相聚

描述

  五位好朋友相聚。第一位朋友带来了很多糖块赠送给各位朋友,使每人的糖块在各自原有的基础上翻了一倍;接着第二位好友也同样向每人赠送糖块,他同样使每人的糖块在各人已有的数量上翻了一倍;第三、第四、第五位好友都照此办理。经过这样的赠送之后,每人的糖块恰好都为x块。问各位好友原先的糖块数分别是多少?

输入
一个正整数x(保证能被32整除)。

输出
  一行,包含五个整数,分别表示五个朋友原先的糖块数,整数间用一个空格分开。

输入样例 1

32

输出样例 1

81 41 21 11 6

提示

32<=x<=2^21

模拟代码:

#include<iostream>
#include<cstdio>
using namespace std;
int main()
{
 int a,b,c,d,e,n;
 cin>>n;
 a=n;b=n;c=n;d=n;e=n;
 e=e+a/2+b/2+c/2+d/2;a=a/2;b=b/2;c=c/2;d=d/2;
 d=d+e/2+a/2+b/2+c/2;e=e/2;a=a/2;b=b/2;c=c/2;
 c=c+e/2+a/2+b/2+d/2;e=e/2;a=a/2;b=b/2;d=d/2;
 b=b+e/2+a/2+d/2+c/2;e=e/2;a=a/2;d=d/2;c=c/2;
 a=a+e/2+b/2+d/2+c/2;e=e/2;b=b/2;d=d/2;c=c/2;
 cout<<a<<" "<<b<<" "<<c<<" "<<d<<" "<<e;
 return 0;
}

数学正解:

#include<bits/stdc++.h>
using namespace std;
int main()
{
    int x,k;
    scanf("%d",&x);
    k=x/32;
    x*=5;
    printf("%d %d %d %d %d",x/2+k,x/4+k,x/8+k,x/16+k,x/32+k);
    return 0;
 } 

猜你喜欢

转载自www.cnblogs.com/poised/p/12505965.html