Ural1049
2012-07-27 08:08
183 查看
get_prime函数可作为O(n)打素数表的模板 附带因子分解功能
#include <cstdio>
#include <cstring>
#include <cstdlib>
#include <cmath>
const int MAXN = 10010, N = 10000;
int pn = 0, prime[MAXN], factor[MAXN], ansfactor[MAXN];
void get_prime(int n)
{
for (int i = 1; i <= n; i++)
factor[i] = i;
for (int i = 2; i <= n; i++)
{
if (i == factor[i])
prime[pn++] = i;
for (int j = 0; j < pn && prime[j] * i <= n; j++)
{
factor[i * prime[j]] = prime[j];
if (i % prime[j] == 0)
break;
}
}
}
int main()
{
get_prime(N);
int a, ans = 1;
for (int i = 0; i < 10; i++)
{
scanf("%d", &a);
while (a != 1)
{
ansfactor[factor[a]]++;
a /= factor[a];
}
}
for (int i = 0; i < pn; i++)
if (ansfactor[prime[i]] > 0)
{
ans = ans * (ansfactor[prime[i]] + 1) % 10;
}
printf("%d\n", ans);
return 0;
}
#include <cstdio>
#include <cstring>
#include <cstdlib>
#include <cmath>
const int MAXN = 10010, N = 10000;
int pn = 0, prime[MAXN], factor[MAXN], ansfactor[MAXN];
void get_prime(int n)
{
for (int i = 1; i <= n; i++)
factor[i] = i;
for (int i = 2; i <= n; i++)
{
if (i == factor[i])
prime[pn++] = i;
for (int j = 0; j < pn && prime[j] * i <= n; j++)
{
factor[i * prime[j]] = prime[j];
if (i % prime[j] == 0)
break;
}
}
}
int main()
{
get_prime(N);
int a, ans = 1;
for (int i = 0; i < 10; i++)
{
scanf("%d", &a);
while (a != 1)
{
ansfactor[factor[a]]++;
a /= factor[a];
}
}
for (int i = 0; i < pn; i++)
if (ansfactor[prime[i]] > 0)
{
ans = ans * (ansfactor[prime[i]] + 1) % 10;
}
printf("%d\n", ans);
return 0;
}
相关文章推荐
- ural 1049
- URAL1049. Brave Balloonists
- URAL 1049 Brave balloonists【数论】
- ural 1049 Brave Balloonists
- URAL 1049 Brave Balloonists
- Ural 1049. Brave Balloonists 求因子的个数
- ural 1049. Brave Balloonists(标准分解式,数论)
- Ural1049 基础数论
- URAL 1049
- URAL:1049 Brave Balloonists
- ural 1048. Superlong Sums 模拟
- ural 1119. Metro dp
- URAL 1167
- ural1009(动态规划)
- HihoCoder - 1049:后序遍历(递归)
- URAL - 1004 Sightseeing Trip(最小环)
- URAL 1123 Square Root(计算二次剩余)
- ural1846 GCD2010(线段树+gcd+离散化)
- 1049. 数列的片段和(20)
- URAL - 2040 Palindromes and Super Abilities 2