https://www.luogu.org/problemnew/show/P3861

排序:乘数保持单调递增

dp+hash(map解决)

 #include <cstdio>
#include <cstdlib>
#include <cmath>
#include <cstring>
#include <time.h>
#include <string>
#include <set>
#include <map>
#include <list>
#include <stack>
#include <queue>
#include <vector>
#include <bitset>
#include <ext/rope>
#include <algorithm>
#include <iostream>
using namespace std;
#define ll long long
#define minv 1e-6
#define inf 1e9
#define pi 3.1415926536
#define E 2.7182818284
const ll mod=1e9+;//
const int maxn=1e6+; bool vis[maxn];
ll zhi[maxn],x[maxn],y[maxn],s[maxn],tot[];
ll n,nn;
int g=,g1=,g2=,g3=;
map<int,int>st; void getzhi()
{
int i,j,value=1e6;
for (i=;i<=value;i++)
{
if (!vis[i])
{
g++;
zhi[g]=i;
}
for (j=;j<=g;j++)
{
if (i*zhi[j]>value)
break;
vis[i*zhi[j]]=;
if (i%zhi[j]==)
break;
}
}
} void getzys(int index,ll value)
{
ll v=;
int i;
for (i=;i<=y[index];i++)
{
if (index!=g1)
getzys(index+,value*v);
else
{
g2++;
s[g2]=value*v;
}
v=v*x[index];
}
} void getr(int index,ll value)
{
if (value==)
{
g3++;
return;
}
if (index==g2+ || value<s[index])
return;
for (int i=index;i<=g2;i++)
if (value%s[i]==)
getr(i+,value/s[i]);
} void work()
{
int i,j;
// g2=-1; //ignore zys 1
g2=;
getzys(,);
// g2--; //ignore zys n
sort(s+,s+g2+); st.clear();
for (i=;i<=g2;i++)
st[s[i]]=i; //from big to small ,ignore repetition
memset(tot,,sizeof(tot));
tot[]=;
for (i=;i<g2;i++) //ascending
for (j=g2;j>=i;j--) // *s[i]=s[j]
if (s[j]%s[i]==)
tot[j]+=tot[st[s[j]/s[i]]];
printf("%lld\n",tot[g2]); //- (n*1) ///超时
// g3=0;
// getr(1,nn);
// printf("%d\n",g3);
} int main()
{
int t,i;
getzhi();
scanf("%d",&t);
while (t--)
{
scanf("%lld",&n);
nn=n;
g1=;
for (i=;i<=g;i++)
if (n%zhi[i]==)
{
g1++;
x[g1]=zhi[i];
y[g1]=;
while (n%zhi[i]==)
{
y[g1]++;
n/=zhi[i];
}
if (n==)
break;
}
if (n!=)
{
g1++;
x[g1]=n;
y[g2]=;
}
work();
}
return ;
}

最新文章

  1. 教你实践ASP.NET Core Authorization
  2. sql语句:插入的时候判断是否有重复项
  3. AngularJS Providers 详解
  4. C++ Web Service SDK
  5. JS 自定义正则表达式
  6. DX11.2 Tiled Resource Pool
  7. SSMS 2008R2没有智能感知方法解决
  8. c3p0详细配置
  9. LRU Cache 解答
  10. 一个三维点类Gpoint3的实现
  11. SyntaxHighlighter去掉右上角帮助图标的正确方法
  12. mysql-5.7.12安装
  13. 『练手』通过注册表 获取 VS 和 SQLServer 文件路径
  14. spring事务详解(四)测试验证
  15. react-01
  16. Codeforces 806 D. Perishable Roads Dijkstra
  17. PON
  18. Ubuntu下怎么编译并运行C、C++和Pascal语言?
  19. Apache+PHP+MySQL环境搭建
  20. Tensorflow中的变量

热门文章

  1. 20155330 《网络对抗》 Exp7 网络欺诈防范
  2. POJ 1328&amp;&amp;2109&amp;&amp;2586
  3. 汇编 shr 逻辑右移指令,shl 逻辑左移指令,SAL 算术左移指令,SAR 算术右移指令
  4. JQuery快速入门-选择器
  5. More Effective C++ Item14:明智运用exception specifications
  6. First day for introducing me
  7. 利用matlab写一个简单的拉普拉斯变换提取图像边缘
  8. 【URLOS应用开发基础】10分钟制作一个nginx静态网站环境应用
  9. Arcengine效率探究之二——属性的更新(转载)
  10. PAT甲题题解-1125. Chain the Ropes (25)-贪心水题