Very Simple Counting


Time Limit: 1 Second      Memory Limit: 32768 KB

Let f(n) be the number of factors of integer n.

Your task is to count the number of i(1 <= i < n) that makes f(i) = f(n).

Input

One n per line (1 < n <= 1000000).

There are 10000 lines at most.

Output

For each n, output counting result in one line.

Sample Input

4
5

Sample Output

0
2

Hint

f(1) = 1, f(2) = f(3) = f(5) = 2, f(4) = 3.


Author: WU, Jun
Source: ZOJ Monthly, December 2009

理论依据:

zoj的题目,对时间和空间的要求都很高。

这一题,首先做的时候,超时。

不看时间,不看数据,直接枚举,不超时是不可能。

根据的公式和上一题福州大学oj那一题是一样的。

贴一下超时代码吧,留个纪念。

 //超时代码

 #include<stdio.h>
#include<stdlib.h> int f[];
int Num_Euler(int n)
{
int num=,k,i;
for(i=;i*i<=n;i++)
if(n%i==)
{
k=;
while(n%i==)
{
k++;
n=n/i;
}
num=num*k;
}
if(n!=)
num=num*;
return num;
} void make_ini()
{
int i;
for(i=;i<=;i++)
f[i]=Num_Euler(i);
}
int main()
{
int n,i,num;
make_ini();
while(scanf("%d",&n)>)
{
num=;
for(i=;i<n;i++)
if(f[i]==f[n])
num++;
printf("%d\n",num);
}
return ;
}

后来想用筛选法来筛一次,然后求值。第一次写的时候,也错了。

 void make_NumEuler()
{
int i,j,k;
for(i=;i<=;i++)
opl[i]=;
for(i=;i<=len;i++)
for(j=prime[i],k=;j<=;j=j+prime[i],k++)
opl[j]=opl[j]*k;
}

思路是有的,就是没有写出来,(⊙o⊙)…
最后的代码:

 #include<iostream>
#include<map>
#include<cstdio>
#include<cstdlib>
#include<cstring> using namespace std; bool s[];
int num[];
int ans[];//个数
int f[];
map<int,int>Q; void make_ini()
{
int i,j,k;
for(i=;i<=;i++)
{
num[i]=i;
ans[i]=;
f[i]=;
}
for(i=;i<=;i++)
if(s[i]==false)//是素数
{
for(j=i;j<=;j=j+i)//枚举每个素数的倍数
{
// if(j%i==0) //这个肯定成立,不需要
{
k=;
while(num[j]%i==)
{
num[j]=num[j]/i;
k++;
}
ans[j]=ans[j]*k;
}
s[j]=true;
}
}
for(i=;i<=;i++)
{
k=ans[i];
if(Q.find(k)==Q.end())
{
Q[k]=;
}
else Q[k]++;
f[i]=Q[k];
}
} int main()
{
int n;
make_ini();
// Q.clear();
while(scanf("%d",&n)>)
{
printf("%d\n",f[n]-);
}
return ;
}

zoj 3286 Very Simple Counting---统计[1,N]相同因子个数的更多相关文章

  1. Codeforces 11D A Simple Task 统计简单无向图中环的个数(非原创)

    太难了,学不会.看了两天都会背了,但是感觉题目稍微变下就不会了.dp还是摸不到路子. 附ac代码: 1 #include<iostream> 2 #include<cstdio> ...

  2. 17997 Simple Counting 数学

    17997 Simple Counting 时间限制:2000MS  内存限制:65535K提交次数:0 通过次数:0 题型: 编程题   语言: 不限定 Description Ly is craz ...

  3. Javascript 统计复选框选中个数

    var checked = document.getElementsByName("checked_c[]"); var checked_counts = 0; for(var i ...

  4. Linux 统计文件夹下文件个数

    查看统计当前目录下文件的个数,包括子目录里的. ls -lR| grep "^-" | wc -l Linux下查看某个目录下的文件.或文件夹个数用到3个命令:ls列目录.用gre ...

  5. 学c语言做练习之​统计文件中字符的个数

    统计文件中字符的个数(采用命令行参数) #include<stdio.h> #include<stdlib.h> int main(int argc, char *argv[] ...

  6. 题目--统计一行文本的单词个数(PTA预习题)

    PTA预习题——统计一行文本的单词个数 7-1 统计一行文本的单词个数 (15 分) 本题目要求编写程序统计一行字符中单词的个数.所谓“单词”是指连续不含空格的字符串,各单词之间用空格分隔,空格数可以 ...

  7. Linux上统计文件夹下文件个数以及目录个数

    对于linux终端用户而言,统计文件夹下文件的多少是经常要做的操作,于我而言,我会经常在谷歌搜索一个命令,“如何在linux统计文件夹的个数”,然后点击自己想要的答案,但是有时候不知道统计文件夹命令运 ...

  8. 统计无向图中三角形的个数,复杂度m*sqrt(m).

    统计无向图中三角形的个数,复杂度m*sqrt(m). #include<stdio.h> #include<vector> #include<set> #inclu ...

  9. 给出一个string字符串,统计里面出现的字符个数

    给出一个string字符串,统计里面出现的字符个数 解决方案: 使用algorithm里面的count函数,使用方法是count(begin,end,'c'),其中begin指的是起始地址,end指的 ...

随机推荐

  1. 程序媛计划——python初级课时3~5

    产生1-10中的随机数: for 循环:所有可遍历对象都能用于for循环,如一个字符串. len(list),list中的元素类型可以各不相同:可以直接用下标对list元素赋值来更新列表 对字符串可以 ...

  2. jzoj1407

    首先設在整個數組內可以直接到達n+1的最左邊的點點為x 則x+1-n區間都可以一次或2次到達n+1 如果某一個點i可以一次到達n+1,則其i+a[i]大於等於n+1 否則可以先跳到i再跳到n+1,需要 ...

  3. 一个Unix内核级别漏洞(一)

    翻译原创稿件,prison整理翻译,首发ichunqiu,原地址:http://lsd-pl.net/kernelvuln.pdf 这是一篇关于Unix内核级别漏洞的paper,由某团队发布在一次黑客 ...

  4. POJ 2363

    #include<iostream> #include<stdio.h> using namespace std; int main() { //freopen("a ...

  5. nginx添加认证

    1.检查工具是否安装,如果未安装则使用yum安装 #htpasswd 有以上输出表示已经安装,如果没有按装,使用如下命令安装: #yum -y  install httpd-tools 2.htpas ...

  6. eclipse outline 中图标含义

    先说颜色:  绿色:public  黄色:protected  蓝色:no modifier  红色:private 再说形状:  实心:method  空心:variable  实心中间有字母C:c ...

  7. Python基础5:列表 元祖 字典 集合 Json

    [ 列表] 列表(list)是Python以及其他语言中最常用到的数据结构之一.Python使用使用中括号 [ ] 来解析列表. 列表是可变的(mutable)——即:可以改变列表的内容. 相关操作: ...

  8. hbase集群中其中某个regionserver 没有启动

    第一步: date命令查看各个机器的时间 发现linux02机器时间差了2个多小时 第二步:ntpdate pool.ntp.org 修改错误时间的机器 第三步: 重启 hbase

  9. Oracle 中分组排序取值的问题

    整理一下排序: 建表语句:create table EXAM(  name    VARCHAR2(32),  subject VARCHAR2(32),  score   INTEGER)数据:IN ...

  10. Python -- 图片处理

    使用PIL库 转换图片格式(jpg  -->  png) from PIL import Image Image.open('E:/art.jpg').save('E:/art.png')