hdu CA Loves GCD dp
2016-04-04 13:52
197 查看
#include<iostream> #include<cstdio> #include<cstdlib> #include<vector> #include<cmath> #include<string> #include<algorithm> #include<set> #include<map> #include<cstring> #include<queue> #include<stack> #include<list> using namespace std; typedef long long ll; const int MAXN=1000; const ll INF=1e9; const ll mod=100000007; int a[1002];ll num[1002]; int pp[1002][1002]; int main() { //freopen("A-large.in","r",stdin); //freopen("A-large.out","w",stdout); // for (int i=0;i<=1000;i++) // for (int j=0;j<=1000;j++) // Gcd[i][j]=__gcd(i,j); for(int i=1;i<=1000;i++){ for(int j=1;j<=1000;j++){ pp[i][j]=__gcd(i,j); } } int t; cin>>t; while(t--){ int n; cin>>n; int maxv=-1; for(int i=0;i<n;i++){ scanf("%d",&a[i]); maxv=max(maxv,a[i]); } memset(num,0,sizeof(num)); for(int i=0;i<n;i++){ for(int j=1;j<=maxv+1;j++){ if(num[j]){ int tmp=pp[j][ a[i] ];//__gcd(j,a[i]); num[tmp]=(num[tmp]+num[j])%mod; } } num[ a[i] ]++; } ll ans=0; for(ll i=1;i<=maxv+1;i++){ ans=(ans+num[i]*i)%mod; } cout<<ans<<endl; } return 0; }
相关文章推荐
- js的正则表达式学习笔记
- 驱动知识
- Maven使用说明
- 计算机知识金字塔
- iOS之原生二维码扫描
- 自启动总结
- 235. Lowest Common Ancestor of a Binary Search Tree
- 黑帽技术联盟:黑帽SEO与白帽SEO之争
- HDU 1394 Minimum Inversion Number (树状数组求逆序对)
- C/C++—— 在构造函数中调用虚函数能实现多态吗(Vptr指针初始化的过程分析)
- ThreadLocal管理下的Session
- Android中layout_gravity和gravity的区别
- 计算机基础(1)-原码、反码、补码
- AB压力测试工具
- lintcode-medium-Permutations
- Ubuntu下图形界面SVN客户端-RabbitVCS的安装
- poj 3084 最小割
- AndroidEventBus源码分析
- CentOS7从ELRepo源中安装Nvidia显卡驱动
- Android Gradle Plugin指南(二)——基本项目