关闭

NYOJ 476 谁是英雄 (唯一分解素数求因子个数)

373人阅读 评论(0) 收藏 举报
分类:

谁是英雄

时间限制:1000 ms  |  内存限制:65535 KB
难度:3
描述

十个数学家(编号0-9)乘气球飞行在太平洋上空。当横越赤道时,他们决定庆祝一下这一壮举。于是他们开了一瓶香槟。不幸

的是,软木塞在气球上打了一个洞,氢气泄漏,气球开始下降,眼看就要落入海中,所有人将要被鲨鱼吃掉。


但是尚有一线生机--若其中一人牺牲自己跳下去的话,那他的朋友们还能多活一会儿。但仍然有一个问题存在--谁

跳下去?所以他们想了一个非常公平的办法来解决这个问题--首先,每人写一个整数ai;然后计

算出a1×a2×a3×a4×……×a10的积的约数的个数N。例如,6的约数有4个(1、2、3、6),则N为4。这位牺牲自

己的英雄将由N的个位数来决定(编号为N的个位数的人要跳下去)。你的任务是求出N。

输入
T(T<=10)组测试数据。
十个整数ai(1≤ai≤10000)。
输出
N的个位数
样例输入
1
1 2 6 1 3 1 1 1 1 1
样例输出
9

思路:相当于把一个数n分解成了10个数,然而这些数有可能分解的不彻底,即还能继续进行分解,所以说一个一个进行分解,然后按照求一个数因子个数的方法写就行了。。



ac代码:

#include<stdio.h>
#include<math.h>
#include<string.h>
#include<stack>
#include<set>
#include<queue>
#include<vector>
#include<iostream>
#include<algorithm>
#define MAXN 1010000
#define LL long long
#define ll __int64
#define INF 0xfffffff
#define mem(x) memset(x,0,sizeof(x))
#define PI acos(-1)
using namespace std;
int gcd(int a,int b){return b?gcd(b,a%b):a;}
LL powmod(LL a,LL b,LL MOD){LL ans=1;while(b){if(b%2)ans=ans*a%MOD;a=a*a%MOD;b/=2;}return ans;}
//head
int cnt[10010];
int main()
{
	int t,i,j;
	scanf("%d",&t);
	while(t--)
	{
		int a;
		int M=-INF;
		mem(cnt);
		for(i=0;i<10;i++)
		{
			scanf("%d",&a);
			M=max(M,a);
			int x=a;
			for(j=2;j<=a;j++)
			{
				if(x%j==0)
				{
					while(x%j==0)
					{
						cnt[j]++;
						x/=j;
				    }
				}
				if(x==1)
				break;
			}
		}
		LL ans=1;
		for(i=1;i<=M;i++)
		{
			if(cnt[i]>=1)
			ans*=(cnt[i]+1);
		}
		printf("%lld\n",ans%10);
	}
	return 0;
}



0
0
查看评论

NYOJ 648 1的个数

数字1的数量 时间限制:1000 ms  |  内存限制:65535 KB 难度:1 描述 给定一个十进制正整数N,写下从1开始,到N的所有正数,计算出其中出现所有1的个数。 例如:n = 12,包含了5个1。1,10,12共包含...
  • LYHXT
  • LYHXT
  • 2014-10-29 21:25
  • 269

NYOJ 476 谁是英雄(唯一素因子分解定理)

题目描述  http://acm.nyist.net/JudgeOnline/problem.php?pid=476 十个数学家(编号0-9)乘气球飞行在太平洋上空。当横越赤道时,他们决定庆祝一下这一壮举。于是他们开了一瓶香槟。不幸 的是,软木塞在气球上打了一个洞,氢...
  • u012435889
  • u012435889
  • 2015-01-08 18:47
  • 829

给定一个整数,打印出它的所有素数因子--两种方法,两种效率。

程序分析:对n进行分解质因数,应先找到一个最小的质数k,然后按下述步骤完成:  (1)如果这个质数恰等于(小于的时候,继续执行循环)n,则说明分解质因数的过程已经结束,另外 打印出即可。 (2)但n能被k整除,则应打印出k的值,并用n除以k的商,作为新的正整数n.重复执行第二步...
  • zzran
  • zzran
  • 2012-10-16 13:45
  • 11975

求一个数的所有素数因子

public class FactorTest {     //要被分解的整数     private static int number = 0;     public static void main(S...
  • ljp812184246
  • ljp812184246
  • 2016-04-02 11:46
  • 3915

n!素因子分解中素数p的幂

n!素因子分解中素数p的幂为 [n/p]+[n/(p^2)]+[n/(p^3)]+…… nefu 118 传送门 n!后面有多少个0 Problem : 118 Time Limit : 100...
  • u011699990
  • u011699990
  • 2015-04-05 13:59
  • 924

连分数分解法寻找整数的因子(Python)

连分数分解法寻找整数的因子(Python)
  • jclian91
  • jclian91
  • 2017-08-27 10:45
  • 404

分解素因子----唯一分解定理

分解素因子 Time Limit: 1500ms   Memory limit: 10000K  有疑问?点这里^_^ 题目描述 假设x是一个正整数,它的值不超过65535(即1 输入 输入的第一行含一个正整数k (1 输出 每个测试...
  • bless924295
  • bless924295
  • 2016-05-25 20:46
  • 2200

c++训练题(求某个数的最大质数因子)兼自己写的一个打印一定范围内质数方法

质数的算法,求解最大质数因子
  • jiang111_111shan
  • jiang111_111shan
  • 2015-07-09 16:28
  • 1183

【经典算法】:求一个数的因子数

问题分析如:整数 4,有1, 4, 2 共3个因子。现在就是输入一个数num,求其因子数。方法:判断数,如果数不为1,则其因子数起码有两个,(自身和1)然后从i=2开始到sqrt(num)做循环,如果num%i==0,则因子数+2当然如果两个因子数相同,是必须要去重的思路优点由于循环做的好,没有了类...
  • qq_23100787
  • qq_23100787
  • 2015-09-15 15:28
  • 6000

整数的素因子分解

一、相关概念  素数:又叫质数,就是只能被1和自己整除的整数。例如:2,3,5,7……. 合数:与素数相对,即除了能被1和自己整除还能被其他整数整除的整数。例如:4,6,8,9…… 注意:1就不是素数,也不是合数。 定理:任意一个正整数都能分解成若干个素数乘积的形式 即: 证明...
  • susan19890313
  • susan19890313
  • 2011-10-20 18:46
  • 6843
    时刻记住--never give up
    人生如棋,吾愿为卒,吾行虽慢,谁曾见吾后退半步!
    个人资料
    • 访问:210753次
    • 积分:9027
    • 等级:
    • 排名:第2483名
    • 原创:723篇
    • 转载:3篇
    • 译文:0篇
    • 评论:29条