据说古代某国有这麽一个规定,战士第一次受伤给抚恤金1金币,第二次受伤给抚恤金2金币,第三次给抚恤金4金币,以此类推。现在有一个战士算起来,一共得到65535枚金币。试设计程序,求他曾经受过多少次伤
请用c++语言编写并回答
有一个规定,第一次受伤给抚恤金1金币,第二次受伤给抚恤金2金币,第三次给抚恤金4金币.请用c++语言编写
答案:3 悬赏:0 手机版
解决时间 2021-03-19 00:17
- 提问者网友:戎马万世
- 2021-03-18 18:19
最佳答案
- 五星知识达人网友:爱难随人意
- 2021-03-18 19:30
#includeusing namespace std;int main(){ int j; double a,i; a=65535-1;//减去战士第一次拿抚恤金的金额 i=2; j=0; while(i>1) {a=a/2; i=a; j=j+1; } cout<<"拿了65535枚抚恤金的战士受了:"<
全部回答
- 1楼网友:你哪知我潦倒为你
- 2021-03-18 22:30
#include
void GetHurt(int a)
{
int count=1;
int gold=1;
int n=1,i=1;
while(1)
{
if(gold==a)
{
cout<
- 2楼网友:神的生死簿
- 2021-03-18 21:10
一共获得的金币数是 2^0 + 2^1 + 2^2 + ...... + 2^n,其中n是受伤次数,设为x
那么2x = 2^1 + 2^2 + ... + 2^(n+1)
有2x - x = 2^(n+1)-2^0 即 x = 2^(n+1)-1
那么 x + 1 = 2^(n+1)
于是 log2(x+1) = n+1 即 n = log(x+1)-1
#include
#include
int main() {
double n;
double x = 65535;
n = log(x+1) / log(2.0) - 1;
printf("%g", n);
return 0;
}
我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息
大家都在看
推荐资讯