日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 人文社科 > 生活经验 >内容正文

生活经验

洛谷P2429 制杖题 [2017年6月计划 数论10]

發布時間:2023/11/27 生活经验 33 豆豆
生活随笔 收集整理的這篇文章主要介紹了 洛谷P2429 制杖题 [2017年6月计划 数论10] 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

P2429 制杖題

題目描述

求不大于 m 的、 質因數集與給定質數集有交集的自然數之和。

輸入輸出格式

輸入格式:

第一行二個整數 n,m。

第二行 n 個整數,表示質數集內的元素 p[i]。

輸出格式:

一個整數,表示答案,對 376544743 取模。

輸入輸出樣例

輸入樣例#1:
2 15
3 5
輸出樣例#1:
60

說明

樣例解釋:所有符合條件的數為 3,5,6,9,10,12,15 其和為 60。

··· 測試點編號 規模

1 2 3 n*m<=10^7
4 5 n<=2,m<=10^9
6 7 n<=20,m<=10^8
8 9 10 n<=20,m<=10^9
···


?

前三個點:n * m <= 1e7

不難想到暴力求解

?

后七個點:n <= 20,m <= 1e9

容斥+等差數列求和

利用二進制枚舉各個數的乘積,利用等差數列求和,容斥原理排除多算的即可

?

#include <iostream>
#include <cstdio>
#include <cstdlib>
#include <cstring> 
#include <algorithm>
#include <vector>
#include <queue>
inline void read(long long &x){x = 0;char ch = getchar();char c = ch;while(ch > '9' || ch < '0')c = ch, ch = getchar();while(ch >= '0' && ch <= '9')x = x * 10 + ch - '0', ch = getchar();}
inline int max(int a, int b){return a > b ? a : b;}
inline int min(int a, int b){return a < b ? a : b;}
inline void swap(int &a, int &b){int tmp = a;a = b;b = tmp;}const int INF = 0x3f3f3f3f;
const int MAXN = 2000 + 5;
const int MOD =  376544743;long long n,m;
long long p[MAXN];
long long ans;int main()
{read(n);read(m);for (register long long i = 1 ; i <= n ; ++ i)read(p[i]);if(n * m <= 100000000){for(int i = 1;i <= m;i ++){for(int j = 1;j <= n;j ++){if(!(i % p[j])){ans += i;ans %= MOD;break;}}}printf("%lld", ans % MOD);return 0;}int S = (1 << n);register long long num,cnt,x;register long long niyuan = (MOD + 1)/ 2;for (register long long i = 1 ; i < S ; ++ i){register long long num = 1,cnt = 0,x = 0;for (register long long j = 1, k = i ; k ; ++j, k >>= 1)if (k & 1)num *= p[j],x ++;cnt = m / num;if (x){if (x & 1)ans += (((num * (1 + cnt))%MOD * cnt)%MOD * niyuan) % MOD;elseans -= (((num * (1 + cnt))%MOD * cnt)%MOD * niyuan) % MOD;ans = ans % MOD;}}printf("%lld", ans % MOD);return 0;
}

?

轉載于:https://www.cnblogs.com/huibixiaoxing/p/7094709.html

總結

以上是生活随笔為你收集整理的洛谷P2429 制杖题 [2017年6月计划 数论10]的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。