📄 pku2917.cpp
字号:
#include <stdio.h>
#include <string.h>
typedef long long llong;
int v[20], c[20];
int vc_cnt;
int cnt;
int X;
void DFS(llong val, int p)
{
int i;
llong tmp;
p--;
if (p < 0)
{
cnt++;
return;
}
tmp = 1;
for (i = 0; i <= c[p] * 2; i++)
{
if (val * tmp <= X)
DFS(val * tmp, p);
tmp *= v[p];
}
}
void Solve()
{
int i, tmpx;
tmpx = X;
vc_cnt = 0;
cnt = 0;
for (i = 2; i * i <= tmpx; i++)
{
if (tmpx % i == 0)
{
v[vc_cnt] = i;
c[vc_cnt] = 0;
do
{
c[vc_cnt]++;
tmpx /= i;
}while (tmpx % i == 0);
vc_cnt++;
}
}
if (tmpx != 1)
{
v[vc_cnt] = tmpx;
c[vc_cnt] = 1;
vc_cnt++;
}
DFS(1, vc_cnt);
printf("%d\n\n", cnt);
}
int main()
{
int t, T;
llong x;
scanf("%d", &T);
for (t = 1; t <= T; t++)
{
scanf("%d", &X);
printf("Scenario #%d:\n", t);
Solve();
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -