17西安网络赛 规律题 Maximum Flow
2017-09-17 11:08
176 查看
https://nanti.jisuanke.com/t/17118
在第一组中,只有一个2;
第二组中,每2个数出现一个5;
第三组中,每2个数出现一个5,每4个数出现一个17;
第四组中,每2个数出现一个5,每4个数出现一个17,每8个数出现一个65;
第五组中,每2个数出现一个5,每4个数出现一个17,每8个数出现一个65,每16个数出现一个257;
2=2^0+1, 5=2^2+1, 17=2^4+1, 257=2^8+1;
其实我挺快找到规律了,然后疯狂WA三个小时,改了各种地方,终于知道哪错了,,,就是n是10^18,那么其实会累加超过long long范围的数,所以打表的时候应该不停地取模,很蠢,,,
在第一组中,只有一个2;
第二组中,每2个数出现一个5;
第三组中,每2个数出现一个5,每4个数出现一个17;
第四组中,每2个数出现一个5,每4个数出现一个17,每8个数出现一个65;
第五组中,每2个数出现一个5,每4个数出现一个17,每8个数出现一个65,每16个数出现一个257;
2=2^0+1, 5=2^2+1, 17=2^4+1, 257=2^8+1;
其实我挺快找到规律了,然后疯狂WA三个小时,改了各种地方,终于知道哪错了,,,就是n是10^18,那么其实会累加超过long long范围的数,所以打表的时候应该不停地取模,很蠢,,,
#include<bits/stdc++.h> using namespace std; const long long mx=1000000000000000000; const long long mod=1000000007ll; map<long long,long long> mp; void init() { for(long long i=4ll,k=4ll;k<=mx;k<<=1ll,i<<=2ll,i%=mod) { // cout<<i+1<<' '<<k+1<<endl; mp[i+1]=k+1; // cout<<mp[i+1]<<endl; } // cout<<mp[5]<<endl; } int main() { init(); long long n; while(~scanf("%lld",&n)) { if(n==2) { printf("1\n");continue; } if(n==3) { printf("3\n");continue; } long long ans=1; ans+=2ll*((n>>1)%mod); ans%=mod; // cout<<ans<<endl; for(long long i=4ll,cnt=2ll;(1ll<<cnt)<=n;i<<=2ll,i%=mod,cnt++) { // cout<<endl<<ans<<endl; // cout<<"cnt="<<cnt<<endl; // cout<<"i="<<i<<endl; if(n>=mp[i+1]) ans+=(i+1ll)%mod; long long num=n>>cnt; num<<=1ll;num|=1ll; for(long long j=2ll;j<cnt;j++) num<<=1ll; num<<=1ll;num|=1ll; // cout<<"num="<<num<<endl; // prlong long(num); if(n<num) ans+=(i+1)%mod*(((n>>cnt)-1)%mod); else ans+=(i+1)%mod*((n>>cnt)%mod); ans=ans%mod; // cout<<ans<<endl; } cout<<ans%mod<<endl; } }
相关文章推荐
- 2017年icpc西安网络赛 Maximum Flow (找规律+数位dp)
- 2017 ACM-ICPC西安赛区网络赛 Maximum Flow【打表找规律】
- 计蒜客17116 Sum 找规律 2017 ACM-ICPC 亚洲区(西安赛区)网络赛
- Maximum Flow - 2017 ACM-ICPC 亚洲区(西安赛区)网络赛
- 【找规律】计蒜客17118 2017 ACM-ICPC 亚洲区(西安赛区)网络赛 E. Maximum Flow
- 2017 ACM-ICPC 亚洲区(西安赛区)网络赛 E.Maximum Flow(找规律?)
- 2017 ACM西安网络赛 E题 Maximum Flow
- 2017 ACM-ICPC 亚洲区(西安赛区)网络赛 C.Sum(找规律)
- Maximum Flow 规律题 2017 ACM-ICPC 亚洲区(西安赛区)网络赛
- 2017 ACM-ICPC 亚洲区(西安赛区)网络赛 E.Maximum Flow【规律】
- 2017 ACM-ICPC 亚洲区(西安赛区)网络赛 Maximum Flow
- 2017 ACM-ICPC 亚洲区(西安赛区)网络赛 E. Maximum Flow(最大流/规律)
- 计蒜客 17118 Maximum Flow(2017 ACM-ICPC 亚洲区(西安赛区)网络赛 E)
- 计蒜客-2017 ACM-ICPC 亚洲区(西安赛区)网络赛E题Maximum Flow(网络流打表找规律)
- C. Sum 数学/规律 2017 ACM-ICPC 亚洲区(西安赛区)网络赛
- 【网络实验】TCP重传时间的规律
- Hdu 5439 Aggregated Counting (2015长春网络赛 ACM/ICPC Asia Regional Changchun Online 找规律)
- Java网络编程从入门到精通(17):Socket类的getter和setter方法(1)
- 安卓控件使用系列17:ImageView获取网络图片
- 数学之路(3)-机器学习(3)-机器学习算法-神经网络[17]