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. Day 6 编码的进阶

     https://blog.csdn.net/Deft_MKJing/article/details/79460485 a.ascii码:8位表示一个字符,共可以表示2**8个(即256)字符 ,   ...

  2. 673. Number of Longest Increasing Subsequence

    Given an unsorted array of integers, find the number of longest increasing subsequence. Example 1: I ...

  3. 【UVA11107 训练指南】Life Forms【后缀数组】

    题意 输入n(n<=100)个字符串,每个字符串长度<=1000,你的任务是找出一个最长的字符串使得超过一半的字符串都包含这个字符串. 分析 训练指南上后缀数组的一道例题,据说很经典(估计 ...

  4. Google Guava 类库简介

    Guava 是一个 Google开发的 基于java的类库集合的扩展项目,包括 collections, caching, primitives support, concurrency librar ...

  5. 深入理解 js this 绑定机制

    函数调用位置 与词法作用域相反的是,this的指向由函数运行时决定,它是动态的,随着函数调用位置变化而变化. 要理解 this,首先要理解调用位置:调用位置就是函数在代码中被调用的位置(而 不是声明的 ...

  6. Python小白学习之路(五)—【类和对象】【列表】【列表相关功能】

    类和对象 (简单的了解一下这个概念,初步有个印象,这个概念很重要,后面会着重讲) 类:具有相同属性和方法的对象的集合: 对象:万物皆对象: 概念很抽象(每当我看不到概念的时候,我就会通过举例来理解) ...

  7. Top Leaders社区发现算法(top leaders community detection approach in information networks)

    一.概念 复杂网络:现实生活中各种系统都可以看做成复杂网络,复杂网络构成包括节点和边,节点是网络中的基本组成单元,节点之间的联系或者关系是网络中的边.例如 电力网络:基站代表节点,基站之间是否互通表示 ...

  8. (转)MySQL 5.6 OOM 问题解决分享

    本文来自:杨德华的原创分享 | MySQL 5.6 OOM 问题解决分享 原文:http://www.cnblogs.com/zhoujinyi/p/5763112.html 延伸阅读:Linux的内 ...

  9. linux更改文件权限

    chown –Rh cheat:cheat /home/cheat/task/Cheat

  10. spring整合mongodb

    使用spring整合mongodb maven 依赖 <dependency> <groupId>org.mongodb</groupId> <artifac ...