3n+1 对于任意大于1的自然数n,若n为奇数,则将n将变为3n+1,否则变为n的一半.经过若干次这样的变换,一描述对于任意大于1的自然数n,若n为奇数,则将n将变为3n+1,否则变为n的一半.经过若干次这样的变换,一定会使n变为1.例如3→10 →5 →16 →8 →4 →2 →1.现请你计算变换中这些数的平均值,例如上述变换中3、10、5、16、8、4、2和1的平均值为6.125.输入输入自然数n,n≤106.输出输出从n变换为1过程中所有数的平均值,保留3位小数,格式见样例.样例输入3样例输出6.125提示NUPT
问题描述:
3n+1 对于任意大于1的自然数n,若n为奇数,则将n将变为3n+1,否则变为n的一半.经过若干次这样的变换,一
描述
对于任意大于1的自然数n,若n为奇数,则将n将变为3n+1,否则变为n的一半.经过若干次这样的变换,一定会使n变为1.例如3→10 →5 →16 →8 →4 →2 →1.现请你计算变换中这些数的平均值,例如上述变换中3、10、5、16、8、4、2和1的平均值为6.125.
输入
输入自然数n,n≤106.
输出
输出从n变换为1过程中所有数的平均值,保留3位小数,格式见样例.
样例输入
3
样例输出
6.125
提示
NUPT
答
//AC过了的
#include
int main()
{
int n,i;
double sum;
scanf("%d",&n);
sum = n;
i = 1;
while(n != 1)
{
if(n % 2)
n = n * 3 + 1;
else
n /= 2;
sum += n;
i ++;
}
printf("%.3f",(double)sum/i);
return 0;
}