HDU 4952 Number Transformation 亂搞

來源:互聯網
上載者:User

標籤:style   blog   http   color   os   io   for   ar   

題意:給你一個數x,給你K次操作,每一次x變為大於等於 x 且是 i 的倍數的數。

解題思路:可以知道  如果 變化以後  x 是i 和 i+1 的公倍數的倍數的話,那麼x的值是不會變的,x  < i * i 的時候,x值肯定會變,每一次增大i(這裡後面就可以直接用公式) 所以我們只需要枚舉到前面那種情況就可以了。

解題代碼:

 1 // File Name: 1008.cpp 2 // Author: darkdream 3 // Created Time: 2014年08月14日 星期四 13時21分38秒 4  5 #include<vector> 6 #include<list> 7 #include<map> 8 #include<set> 9 #include<deque>10 #include<stack>11 #include<bitset>12 #include<algorithm>13 #include<functional>14 #include<numeric>15 #include<utility>16 #include<sstream>17 #include<iostream>18 #include<iomanip>19 #include<cstdio>20 #include<cmath>21 #include<cstdlib>22 #include<cstring>23 #include<ctime>24 #define LL long long25 26 using namespace std;27 LL c(double x)28 {29    return x + 1; 30 }31 #define eps 1e-832 int main(){33   LL   x ,k;34   int ca = 0 ; 35   while(scanf("%I64d %I64d",&x,&k) != EOF)36   {37       ca ++ ; 38       if( k == 0)39       {40          break;41       }42       int i;43       for(i = 1;i <= k;i++)44       {45           if(x % i != 0 )46           {47              x = c(x/i)*i;48           }49           if(1ll*i*(i+1) > x)50               break;51       }52       if(i < k )53       {54          x = (x/i)*k;55       }56     57       printf("Case #%d: %I64d\n",ca,x);58   }59 return 0;60 }
View Code

 

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.