程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> C語言 >> C++ >> C++入門知識 >> XTU OJ 1160 Harry Potter

XTU OJ 1160 Harry Potter

編輯:C++入門知識



Harry Potter

Accepted : 72 Submit : 223 Time Limit : 1000 MS Memory Limit : 65536 KB

題目描述

Harry Potter想立刻趕到學校去,假設他和學校處於一條直線上,他一開始處於0點,學校位於X點。在一個單位時間內他可以往前走1格,或者使用魔法把自己變到目前坐標2倍的地方。請問他到學校最少需要多少時間?

輸入

第一行是一個整數K,表示樣例的個數。 以後每行是一個整數,表示X(0≤X≤10^18)。

輸出

每行輸出一個整數,表示Harry Potter趕到學校需要的時間。

樣例輸入

3
1
10
100

樣例輸出

1
5
9


最後一次模擬訓練,下一周就比賽了,做了一下湘潭大學的聯合訓練題,好受打擊啊,只做出來一道題,還有幾道題都沒什麼思路,這樣的狀態怎麼去比賽啊!!!只做出了這一道水題,後面的一道題,wa了好多次,還超時了好幾次,好多模板題,看不出是什麼模板啊,還是有好多內容不熟悉啊!!發現了好多問題,說明自己的實力不行!!!還需要加強訓練!!

下面是ac的代碼:

#include 
#include 
using namespace std;
int main()
{
    int t;
    long long x;
    scanf("%d",&t);
    while(t--)
    {
        long long count=0;
        scanf("%I64d",&x);
        while(x)
        {
            if(x%2==0)
            {
                x/=2;
                count++;
            }
            else
            {
                x-=1;
                count++;
            }
        }
        printf("%I64d\n",count);
    }
    return 0;
}
判斷是否是奇數或者是偶數可以用 &1,可能比這樣省時間! 位運算!

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved