传送门:Aladdin and the Flying Carpet

题意: 给出两个正整数1<=m<=n<=1e12。问N可以拆成多少对p*q,使得p和q中最小的不小于a,且p!=q。

分析:先log(n)求出n的总因子个数,然后再排除因子小于m的个数,若m*m>n答案必定为0,否则可以暴力1~m排除因子小于m的个数,这里稍微优化一下dfs排除小于m的因子个数。

#pragma comment(linker,"/STACK:1024000000,1024000000")
#include <cstdio>
#include <cstring>
#include <string>
#include <cmath>
#include <limits.h>
#include <iostream>
#include <algorithm>
#include <queue>
#include <cstdlib>
#include <stack>
#include <vector>
#include <set>
#include <map>
#define LL long long
#define mod 100000000
#define inf 0x3f3f3f3f
#define eps 1e-6
#define N 1000000
#define lson l,m,rt<<1
#define rson m+1,r,rt<<1|1
#define PII pair<int,int>
using namespace std;
inline LL read()
{
char ch=getchar();LL x=,f=;
while(ch>''||ch<''){if(ch=='-')f=-;ch=getchar();}
while(ch<=''&&ch>=''){x=x*+ch-'';ch=getchar();}
return x*f;
}
int prime[N/],tot;
bool vis[N+];
int ans;
LL n,m;
void init()
{
memset(vis,false,sizeof(vis));
for(int i=;i<=N;i++)
{
if(!vis[i])
{
prime[tot++]=i;
}
for(int j=;j<tot&&i*prime[j]<=N;j++)
{
vis[i*prime[j]]=true;
if(i%prime[j]==)break;
}
}
}
void dfs(int dep,LL x)
{
ans--;
for(int i=dep;i<tot;i++)
{
if(x*prime[i]<m)
{
if(n%(x*prime[i])==)
dfs(i,x*prime[i]);
}
else return;
}
}
int main()
{
int T,cas=;
init();
T=read();
while(T--)
{
n=read();m=read();LL temp=n;
printf("Case %d: ",cas++);
if(m*m>=n)
{
puts("");continue;
}
ans=;
for(int i=;i<tot&&(LL)prime[i]*prime[i]<=temp;i++)
{
if(temp%prime[i]==)
{
int x=;
while(temp%prime[i]==)
{
x++;temp/=prime[i];
}
ans*=(x+);
}
}
if(temp>)
{
ans*=;
}
ans/=;
if(m>)dfs(,);
printf("%d\n",ans);
}
}

最新文章

  1. CRUD查询
  2. JS - 柯里化
  3. linux kernel elv_queue_empty野指针访问内核故障定位与解决
  4. PHPExcel读取excel文件
  5. 关于Ajax工作原理
  6. MyEclipse 中各种 libraries 的含义
  7. C++多线程开发之actor model
  8. windows下使用pthreads
  9. P163、面试题29:数组中出现次数超过一半的数字
  10. MySQL for Excel用法
  11. 【转】Web前端开发规范文档
  12. H - Pots
  13. JDBC batch批处理Statement executeBatch 具体解释
  14. WindowsForm 记事本 对话框
  15. android 编译共享ccache的缓存
  16. Windows命令查看文件MD5码
  17. git 忽略已跟踪的文件
  18. 部署maria数据库到linux(源码编译安装)
  19. PBRT笔记(14)——光线传播2:体积渲染
  20. Leetcode: Number Complement

热门文章

  1. python gzip 压缩文件
  2. Java里的日期和时间学习
  3. Java 23种设计模式详尽分析与实例解析之三--行为型模式
  4. GitHub详解(转)
  5. poj 3778
  6. 刚開始学习的人制作VMOS场效应管小功放
  7. Windows 8 动手实验系列教程 实验6:设置和首选项
  8. Mybatis 数据库物理分页插件 PageHelper
  9. Java 的垃圾回收机制(转)
  10. 14.1.3 Turning Off InnoDB 关掉InnoDB