n個數的和為n個數的公倍數

2021-07-11 18:17:19 字數 704 閱讀 9892

題意(輸入乙個n(n<=200),給出n個不同的數,使得這n個數的和為這n個數每個數的倍數。

思路:首先容易知道,當n=2的時候無解(兩個1不算,因為要求這n個數是不同的)。n大於2的時候這樣構造n個數(1 , 2*3^0 , 2*3^1 , 2*3^2 ... 2*3^(n-3) , 3^(n-2))。可以看到,這n個數的和為2*3^(n-2),為每個數的整倍數。這樣一來,只需要構造3的冪及其二倍的大數即可。

#include #include #include #include #define clr(s,t) memset(s,t,sizeof(s));

using namespace std;

#define n 20005

struct nodes[205];

int t,n;

void init()

for(int i = 0;i<=198;i++)

}int main()

printf("1\n");

for(int i = 0;i=0;j--)

printf("%d",s[i].m[j]);

printf("\n");

}for(int j = s[n-2].lend-1;j>=0;j--)

printf("%d",s[n-2].d[j]);

printf("\n");

}}

n個數的最小公倍數

1.利用公式法求兩個數最小公倍數 假設現在要求最小公倍數的兩個數為x,y,他們的最大公約數為p,最小公倍數為q。則xy pq 2.最大公約數求法 int gg int a,int b return a 3.求幾個數的最小公倍數 k a k a,b a b gg a,b 不斷求兩個數的最小公倍數與第三...

n個數的最小公倍數

輸入n,輸出最小的正整數,他是1到n所有數的倍數。input 輸入第一行組數t,接下來t行,每行乙個整數n。1 t 20 1 n 20 output 對於每組資料,輸出乙個數,表示1到n的最小公倍數。sample input33 1020 sample output 62520 232792560 ...

C 求第n個數的最小公倍數

輸入 乙個1到100的整數,如10 輸出 1,2,3,4,5,6,7,8,9,10的最小公倍數 注意 多行輸入,大數字的乘法運算 因為n不超過100,先用陣列index 100 存第n個數最小公倍數的因數。如n 6時,那麼index 5 再依次將index i 按每位數字依次與之前的乘積結果相乘並疊...