演算法筆記 簡單數學問題的題解

2021-08-21 06:31:23 字數 1984 閱讀 1493

題目描述

乙個正整數有可能可以被表示為n(109>=n>=2)個連續正整數之和,如:

15=1+2+3+4+5

15=4+5+6

15=7+8

根據輸入的任何乙個正整數,找出符合這種要求的所有連續正整數序列。

輸入格式

乙個正整數。

輸出格式

輸出符合題目描述的全部正整數序列,每行乙個序列,每個序列都從該序列的最小正整數開始、以從小到大的順序列印。如果結 果有多個序列,按各序列的最小正整數的大小從小到大列印各序列。此外,序列不允許重複,序列內的整數用乙個空格分隔。如果沒有符合要求的序列,輸出 「none」。

樣例資料

input1

15output1

1 2 3 4 5

4 5 6

7 8input2

16output2

none

必然有一串數等於n,設這串數字頭為a,尾為b;

則根據等差數列公式:和=(首項+末項)*項數/2;

因此可得,(a+b)(b-a+1)/2=n

化簡,得:(a+b)(b-a+1)=2n

顯然,a+b 和 b-a+1 都為整數且是2n的因數

因此我們便只要列舉2n的因數i即可

接著,我們設xy=2n,就可以得到方程組:

【a+b=x

b-a+1=y】

解這個方程組,得:b=(x+y-1)/2,a=x-b(當x,y為引數時)

然後列舉i是,1.設x=i;2.設y=i 則進行兩次操作求合法的a和b就可以了

參考**:

#include

using

namespace

std;

int n,t,flag,tmp=0;

struct sans[100000]={};

inline

bool cmp(s x,s y)

}int main()

if (flag==0) cout

<<"none";

sort(ans+1,ans+tmp+1,cmp);

for (int i=1;i<=tmp;i++)

題目描述

監獄有連續編號為1..n的n個房間,每個房間關押乙個犯人。有m種宗教,每個犯人可能信仰其中一種。如果相鄰房間的犯人信仰的宗教相同,就可能發生越獄。求有多少種狀態可能發生越獄。

輸入格式

輸入兩個整數m和n,1≤m≤10 8

108

,1≤n≤10 12

1012

。輸出格式

可能越獄的狀態數,模100003取餘。

樣例資料

input

2 3output

6樣例說明

6 種狀態為:(000)(001)(011)(100)(110)(111)

資料規模與約定

時間限制:1s

1s空間限制:256mb

256mb

求可能發生越獄,再根據:可能發生數+不可能發生數=總數,得:所求答案=總數-不可能發生數

總數=m^n

不可能發生數=m*(m-1)^(n-1)

即,ans=m^n-m*(m-1)^(n-1)

由於資料過大,需要快速冪

有序減法取模,請及時加上mod,且即使取模即可

參考**:

#include

using

namespace

std;

const

long

long mod=100003;

long

long n,m;

long

long qpower(long

long a,long

long b)

return ans;

}int main()

《演算法筆記》5 1小節 數學問題 簡單數學

題目描述 用小於等於n元去買100隻雞,大雞5元 只,小雞3元 只,還有1 3元每只的一種小雞,分別記為x只,y只,z只。程式設計求解x,y,z所有可能解。輸入 測試資料有多組,輸入n。輸出 對於每組輸入,請輸出x,y,z所有可行解,按照x,y,z依次增大的順序輸出。樣例輸入 copy 45 樣例輸...

《演算法筆記》5 1小節 數學問題 簡單數學

題目描述 計算兩個矩陣的乘積,第乙個是23矩陣,第二個是32矩陣,結果為乙個22矩陣。輸入輸入包含多組資料,先輸入乙個23矩陣,再輸入乙個3 2矩陣。輸出輸出兩個矩陣的乘積。樣例輸入 copy 1 1 1 1 1 1 1 11 1 1 1樣例輸出 copy 3 33 3 思路分析 主要就是明白矩陣乘...

演算法筆記練習 5 1 簡單數學 問題 B 反序數

演算法筆記練習 題解合集 題目鏈結 題目描述 設n是乙個四位數,它的9倍恰好是其反序數 例如 1234的反序數是4321 求n的值 輸入程式無任何輸入資料。輸出輸出題目要求的四位數,如果結果有多組,則每組結果之間以回車隔開。用i遍歷 1000 到 1111 的範圍,若有符合條件的,輸出 把四位數i的...