51Nod-1383-整數分解為2的冪
描述
題解
看到這裡,我們應該可以想到,這是一個數論問題,應該是一個什麼數列,暴力解出來小資料後,在 OEIS 中查看了一下下,發現的確是一個十分有趣的數列——Binary partition function: number of partitions of n into powers of 2.
很明顯,這裡
所以呢,直接暴力預處理一下,然後詢問什麼輸出什麼即可嘍~~~具體怎麼推出來這個公式我是真不清楚,只會查到公式直接應用,要讓我證明為什麼這樣可解,我實在是心有餘而力不足啊!
程式碼
#include <iostream>
using namespace std;
const int MAXN = 1e6 + 10;
const int MOD = 1e9 + 7;
int n;
int f[MAXN] = {1, 1};
void init()
{
for (int i = 2; i < MAXN; i++)
{
if (i % 2)
{
f[i] = f[i - 1];
}
else
{
f[i] = (f[i - 1 ] + f[i >> 1]) % MOD;
}
}
}
int main(int argc, const char * argv[])
{
init();
while (cin >> n)
{
cout << f[n] << '\n';
}
return 0;
}
相關推薦
51nod 1383 整數分解為2的冪(數列,也可以自己根據觀察找規律推理得到遞推公式)
描述: 組合數學生成函式 1383 整數分解為2的冪 1 秒 131,072 KB 80 分 5 級題 任何正整數都能分解成2的冪,給定整數N,求N的此類劃分方法的數量!由於方案數量較大,輸出
51Nod-1383-整數分解為2的冪
ACM模版 描述 題解 看到這裡,我們應該可以想到,這是一個數論問題,應該是一個什麼數列,暴力解出來小資料後,在 OEIS 中查看了一下下,發現的確是一個十分有趣的數列——Binary partition function: number of p
51nod 1383 整數分解為2的冪(遞推)
Description 任何正整數都能分解成2的冪,給定整數N,求N的此類劃分方法的數量!由於方案數量較大,輸出Mod 1000000007的結果。 比如N = 7時,共有6種劃分方法。 7=1+1+1+1+1+1+1 =1+1+1+1+1+2
51nod 1383 整數分解為2的冪
#include<bits/stdc++.h> using namespace std; const int MAXN=1000100; const int mod=1e9+7; int
[51Nod 1383] 整數分解為2的冪
Description 任何正整數都能分解成2的冪,給定整數N,求N的此類劃分方法的數量!由於方案數量較大,輸出Mod 1000000007的結果。 比如N = 7時,共有6種劃分方法。
51nod-1383 整數分解為2的冪
原題連結 收藏 關注 任何正整數都能分解成2的冪,給定整數N,求N的此類劃分方法的數量!由於方案數量較大,輸出Mod 1000000007的結果。 比如N = 7時,共有6
[51Nod 1048] 整數分解為2的冪 V2
Description 任何正整數都能分解成2的冪,給定整數N,求N的此類劃分方法的數量! 比如N = 7時,共有6種劃分方法。 7=1+1+1+1+1+1+1 =1+1+1+1+1+2 =1+1+1+2+2
【51NOD 1383】整數分解為2的冪
DH ---------以上初三THU/PKU大爺---- Alan_cty LYD XHM HZJ ZZ ---以下是大神%-- YMW Samjia2000 werkeytom_ftd Crazy_czy WorldWide_D Yxuan
51Nod 1383&1048 整數分解為2的冪
題目 任何正整數都能分解成2的冪,給定整數N,求N的此類劃分方法的數量。 V1:n≤106n≤106。要對答案模1e9+71e9+7。 V2:n≤1030n≤1030。將整個答案輸出。 解題
[51nod1383&1048]整數分解為2的冪
題目大意 任何正整數都能分解成2的冪,給定整數N,求N的此類劃分方法的數量! 比如N = 7時,共有6種劃分方法。 7=1+1+1+1+1+1+1 =1+1+1+1+1+2 =1+1+1+2+2 =1+2+2+2 =1+1+1+4
[51nod1138]正整數分解為幾個連續自然數之和
sqrt esp 連續 奇數 mes 判斷 -i 兩個 註意 解題關鍵:註意為什麽上界是$\sqrt {2n} $ 因為函數是關於m的遞減函數,而結果必須為正整數 $a = \frac{{2n + m - {m^2}}}{{2m}} = \frac{n}{m} + \f
PTA7-37 整數分解為若干項之和(20 分)超級詳解
將一個正整數N分解成幾個正整數相加,可以有多種分解方法,例如7=6+1,7=5+2,7=5+1+1,…。程式設計求出正整數N的所有整數分解式子。輸入格式:每個輸入包含一個測試用例,即正整數N (0<N≤30)。輸出格式:按遞增順序輸出N的所有整數分解式子。遞增順序是指:
一個正整數分解為幾個連續的正整數之和
題目: 給定你一個數字 如:15 15可分解為 7+8 4+5+6 1+2+3+4+5 再如: 8 8不可分解為任何連續的正整數之和 所以輸出NONE 此題就是給定一個數字如果這個數字可以分解為
7-37 整數分解為若干項之和(20 分)
題目連結(組合版):點選開啟連結題目大意:略。解題思路:此方法僅限於輸出組合情況,計數的話會TLE。附加題目(計數版):點選開啟連結AC 程式碼(組合版)#include<bits/stdc++.
PTA 7-12 整數分解為若干項之和(20 分)
將一個正整數N分解成幾個正整數相加,可以有多種分解方法,例如7=6+1,7=5+2,7=5+1+1,…。程式設計求出正整數N的所有整數分解式子。 輸入格式: 每個輸入包含一個測試用例,即正整數N (0 < N ≤ 30)。 輸出格式: 按遞增順序輸出N的所有整數分解式
正整數分解為n個連續正整數
思路:等差數列求和: sn=a1*n+n*(n-1)*d/2 在這裡d為1 #include<stdio.h> //#define N 1000 #define M 10 void print(int k) {int sn=0,t=0;for(int a1=1;
7-1 整數分解為若干項之和(20 分)(dfs)
思路:不帶標記的dfs,只要沒有超過和就不斷dfs直到超過了之後向前回溯。 #include<stdio.h> #include<stdlib.h> #include<string.h> #include<math
(PTA)7-1 整數分解為若干項之和
題目 將一個正整數N分解成幾個正整數相加,可以有多種分解方法,例如7=6+1,7=5+2,7=5+1+1,…。程式設計求出正整數N的所有整數分解式子。 輸入格式: 每個輸入包含一個測試用例,即正整數N (0 輸出格式: 按遞增順
pta 5-37 整數分解為若干項之和 (遞迴)
5-37 整數分解為若干項之和 (20分) 將一個正整數N分解成幾個正整數相加,可以有多種分解方法,例如7=6+1,7=5+2,7=5+1+1,…。程式設計求出正整數N的所有整數分解式子。 輸入格式: 每個輸入包含一個測試用例,即正整數N (0<<
面試總結:任意一個整數分解為幾個連續正整數之和
前陣子參加了國內某一大公司的面試。到了之後,人家不問出身,不問來歷,就直接開機讓我上機程式設計。因為是第一次在面試時上機操作,儘管題目不是很難,但是由於沒搞清楚機考和筆試的區別,導致最後面試失敗。現在總結一下自己在機考時碰到的一些問題,以免自己以後再犯同樣的錯