设为首页 加入收藏

TOP

NYOJ 476 谁是英雄(唯一素因子分解定理)
2015-07-20 17:24:38 来源: 作者: 【 】 浏览:2
Tags:NYOJ 476 英雄 唯一 因子 分解 定理

题目描述

?

十个数学家(编号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,都可以表示为:n=p[0]^a[0]*......*p[i]^a[i]*......*p[n]^a[n],其中p[i]是素数,a[i]是整数>0,而n的约数的个数sum为,sum=(a[0]+1)*.....*(a[i]+1)*......(a[n]+1)。

?

AC代码:

?

/**
  *@xiaoran
  *唯一素因子分解,n的约数个数为PI(a[i]+1)
  *res=(a[0]+1)*(a[1]+1)*...*(a[n]+1),其中a[i]均为素数
  */
#include
    
     
#include
     
       #include
       #include
       
         #include
        
          #include
         
           #include
          
            #include
           
             #include
            
              #include
             
               #include
              
                #include
               
                 #define LL long long using namespace std; int a[10000]; int main() { int t,n; cin>>t; while(t--){ int res=1,x,k,m=0; memset(a,0,sizeof(a)); for(int i=0;i<10;i++){ cin>>n; if(m
                
                 

?

】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
分享到: 
上一篇HDU 1695 GCD (容斥原理+质因数分.. 下一篇poj 3211 Washing Clothes 0-1背包

评论

帐  号: 密码: (新用户注册)
验 证 码:
表  情:
内  容:

·C 内存管理 | 菜鸟教 (2025-12-26 20:20:37)
·如何在 C 语言函数中 (2025-12-26 20:20:34)
·国际音标 [ç] (2025-12-26 20:20:31)
·微服务 Spring Boot (2025-12-26 18:20:10)
·如何调整 Redis 内存 (2025-12-26 18:20:07)