ACM判斷整除

2021-10-20 11:17:01 字數 1526 閱讀 6762

判斷整除

【題目描述】

乙個給定的正整數序列,在每個數之前都插入+號或-號後計算它們的和。比如序列:1、2、4共有8種可能的序列:

(+1) + (+2) + (+4) = 7

(+1) + (+2) + (-4) = -1

(+1) + (-2) + (+4) = 3

(+1) + (-2) + (-4) = -5

(-1) + (+2) + (+4) = 5

(-1) + (+2) + (-4) = -3

(-1) + (-2) + (+4) = 1

(-1) + (-2) + (-4) = -712

3456

78910

1112

1314

15所有結果中至少有乙個可被整數k整除,我們則稱此正整數序列可被k整除。例如上述序列可以被3、5、7整除,而不能被2、4、6、8……整除。注意:0、-3、-6、-9……都可以認為是3的倍數。

【輸入】

輸入的第一行包含兩個數:n(2【輸出】

如果此正整數序列可被k整除,則輸出yes,否則輸出no。(注意:都是大寫字母)

【輸入樣例】

3 21 2 4

【輸出樣例】

(-1)+(-2)+(-4)=-7

(-1)+(-2)+(+4)=1

(-1)+(+2)+(-4)=-3

(-1)+(+2)+(+4)=5

(+1)+(-2)+(-4)=-5

(+1)+(-2)+(+4)=3

(+1)+(+2)+(-4)=-1

(+1)+(+2)+(+4)=7

no————————————————

本題用二進位制數01表示第n種情況各個數的正負號0代表負,1代表正,比如例題種,第一種情況全是整數的情況下那麼就是111,以此來解題,函式convert是將第n種情況轉化成二進位制形式

#include

#include

#include

#include

using

namespace std;

#include

#include

int n;

string convert

(int i)

//將第i種情況轉化成二進位制形式

while

(k--

)reverse

(s.begin()

, s.

end())

;return s;

}int

main()

else

if(s[j]

=='1')}

cout << sum << endl;

//每一項的結果

if(sum%k ==0)

}if(flag)

cout <<

"yes"

<< endl;

else

cout <<

"no"

;return0;

}

ACM 整除問題

以a的所有素因數為基礎分解n 和a,以其指數判斷是否能夠整除。判斷n 的素因數p的指數時,不斷加上n p.具體見 include includeusing namespace std const int max 100000 int is prime max int primes max int a...

VB判斷整除並整除

private sub command1 click dim m as integer,n as integer,d as integer dim s as long 儲存結果 m val text1.text n val text2.text d val text3.text s 0 sum m,...

1195 判斷整除

題目描述 乙個給定的正整數序列,在每個數之前都插入 號或 號後計算它們的和。比如序列 1 2 4共有8種可能的序列 1 2 4 7 1 2 4 1 1 2 4 3 1 2 4 5 1 2 4 5 1 2 4 3 1 2 4 1 1 2 4 7 所有結果中至少有乙個可被整數k整除,我們則稱此正整數序列...