839D

摘要:
=A[i])num[A[i]/x]++;23}24}2526lltot=0;如果{29p[i]=num[i]*modpow%mo;如果{29 p[i]-=p[j];31p[i]=%mo;3233%=mo;34}35}36 cout˂˂tot˂˂endl;37}ViewCode的另一个解决方案,尚未仔细检查~

839D - Winter is here

题意:

839D第1张

题解:

839D第2张

那个式子我都没想着去化简~太弱了=_=

参考的dalao的代码~

839D第3张839D第4张
 1 #include <bits/stdc++.h>
 2 using namespace std;
 3 #define ll long long
 4 const int maxn=200010;
 5 const int mod=1e9+7;
 6 
 7 int cnt1[maxn*5],cnt2[maxn*5];
 8 ll dp[maxn*5];
 9 int base[maxn];
10 
11 int main(){
12     base[0]=1;
13     for(int i=1;i<maxn;i++) base[i]=base[i-1]*2%mod;  //预处理
14     int n;
15     scanf("%d",&n);
16     int x;
17     for(int i=0;i<n;i++){
18         scanf("%d",&x);
19         cnt1[x]++;
20     }
21     for(int i=2;i<=1000000;i++){
22         for(int j=i;j<=1000000;j+=i){
23             cnt2[i]+=cnt1[j];
24         }
25     }
26     for(int i=1000000;i>=2;i--){
27         if(cnt2[i]==0) continue;
28         dp[i]=(1LL*base[cnt2[i]-1]*cnt2[i])%mod;
29         for(int j=i*2;j<=1000000;j+=i) dp[i]=(dp[i]+mod-dp[j])%mod;
30     }
31     int ans=0;
32     for(int i=2;i<=1000000;i++) ans=(ans+i*dp[i])%mod;
33     printf("%d
",ans);
34     return 0;
35 }
ac

下面这个更优一些(不完整

839D第5张839D第6张
 1 int N;
 2 ll A[202020];
 3 ll mo=1000000007;
 4 
 5 ll num[1010100];
 6 ll p[1010100];
 7 
 8 ll modpow(ll a, ll n = mo-2) {
 9     ll r=1;
10     while(n) r=r*((n%2)?a:1)%mo,a=a*a%mo,n>>=1;
11     return r;
12 }
13 
14 void solve() {
15     int i,j,k,l,r,x,y; string s;
16     
17     cin>>N;
18     FOR(i,N) {
19         cin>>A[i];
20         for(x=1;x*x<=A[i];x++) if(A[i]%x==0) {
21             num[x]++;
22             if(x*x!=A[i]) num[A[i]/x]++;
23         }
24     }
25     
26     ll tot=0;
27     for(i=1000000;i>=2;i--) {
28         if(num[i]) {
29             p[i]=num[i]*modpow(2,num[i]-1)%mo;
30             for(j=i*2;j<=1000000;j+=i) p[i]-=p[j];
31             p[i]=(p[i]%mo+mo)%mo;
32             
33             (tot+=p[i]*i)%=mo;
34         }
35     }
36     cout<<tot<<endl;
37 }
View Code

另一种解法,还没仔细看~

839D第7张

免责声明:文章转载自《839D》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇oracle之字符集查看及其修改(转载)Linux系统定时任务启动下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

随便看看

centos关闭开机自启项

centos关闭开机自启项先来查看默认情况下Linux系统开启的服务有哪些,由于我们工作在文本模式3级别,因此只需要查找3级别上开启的服务即可。查看命令如下:[root@www~]#LANG=en 先调整成英文字符集,以方便下面命令过滤中文字符串[root@www~]#chkconfig--list|grep3:on可以看到,默认情况下开启了很多服务,我们需...

selenium自动化之鼠标操作

,selenium为我们提供了一个处理此类事件的类——ActionChains。ActionChains可以模拟鼠标操作,例如单击、双击、右键单击、拖动等。鼠标移动时演示页面的截图:demo1.使用鼠标移动到WriteonOver按钮的顶部。python脚本如下:读取鼠标移动代码,首先定义浏览器驱动程序,最大化窗口,打开测试页面URL,定位到测试按钮顶部,定...

winform窗体(六)——DataGridView控件及通过此控件中实现增删改查

“,”Delete Data“,btn)==DialogResult.Yes){}V.多条件查询。如果用户没有输入任何内容或文本框为空,则查询所有内容。//设置两个常量条件stringtj1=”1=1“;stringtj2=”1=1”;//根据用户的输入更改条件。//如果用户输入名称If(name!=”“){tj1=“Namelike@name“;}//如果...

node 访问第三方API

如果没有提供头,将检测文件后缀,并在PUT请求中设置相应的内容类型。...

GeoServer基础教程(一):环境搭建篇

到目前为止,GeoServer环境已经建立,下面的博客文章将继续让您熟悉GeoServer的界面和基本功能。...

[Oracle]

MyOralceLinux6.5isrunningonVirtualBox.Basicsettingsis4Gmemory,50Ghard-disk,autopartitionwheninstallOL6.5.**Followingseriesofoperationsneedrootprivilege.1.Edit/etc/hostsAddyourhostn...