程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> C語言 >> C++ >> C++入門知識 >> hdu 2045 不容易系列之—— LELE的RPG難題

hdu 2045 不容易系列之—— LELE的RPG難題

編輯:C++入門知識

這個題是找規律的,其實我們只需要看以一個格子圖第一個顏色的所有事件數乘以3即可。這個事件怎麼看呢,由於題目中要求最後一個格子的顏色和第一個格子的顏色不同,所以我們必然捨去了一些最後的1,那麼這些1怎麼求呢,具體看下面的程序。下面結構體中的a是當前最後一排的事件個數,yi就是少的1有多少個。

 

[cpp]
<SPAN style="FONT-SIZE: 18px">#include<iostream> 
using namespace std; 
struct node{ 
    _int64 a; 
    int yi; 
}; 
node fuck[51]; 
_int64 f(_int64 k) 

    _int64 sum=1; 
    for(int j=1;j<=k;j++) 
        sum=sum*2; 
    return sum; 

int main() 

    int i,n; 
    fuck[1].a=1; 
    fuck[1].yi=0; 
    fuck[2].a=2; 
    fuck[2].yi=0; 
    for(i=3;i<=50;i++) 
    { 
        fuck[i].a=fuck[i-1].a+(f(i-2)-fuck[i-1].a)*2; 
        fuck[i].yi=f(i-1)-fuck[i].a; 
    } 
    while(cin>>n) 
    { 
        cout<<3*fuck[n].a<<endl; 
    } 
    return 0; 

</SPAN> 

#include<iostream>
using namespace std;
struct node{
    _int64 a;
    int yi;
};
node fuck[51];
_int64 f(_int64 k)
{
    _int64 sum=1;
    for(int j=1;j<=k;j++)
        sum=sum*2;
    return sum;
}
int main()
{
    int i,n;
    fuck[1].a=1;
    fuck[1].yi=0;
    fuck[2].a=2;
    fuck[2].yi=0;
    for(i=3;i<=50;i++)
    {
        fuck[i].a=fuck[i-1].a+(f(i-2)-fuck[i-1].a)*2;
        fuck[i].yi=f(i-1)-fuck[i].a;
    }
    while(cin>>n)
    {
        cout<<3*fuck[n].a<<endl;
    }
    return 0;
}

 

 

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