码迷,mamicode.com
首页 > 其他好文 > 详细

Wannafly 22A

时间:2018-08-18 23:41:40      阅读:192      评论:0      收藏:0      [点我收藏+]

标签:return   \n   答案   print   就是   gcd   ++   algorithm   for   

题解

另g = gcd(a1,a2,a3....)
那么k * g % m的方案书就是答案
这个式子子显然是有循环节的
x * g = 0 mod m ,x * g + y * m = 0
exgcd 后 x = x0 + k * (m/gcd(g,m)) 也是就m/gcd(g,m)

代码

#include<map> 
#include<cstdio> 
#include<algorithm> 
using namespace std; 
int n,m; 
int a[1007]; 
int gcd(int x,int y) { 
    if(!y) return x; 
    else return gcd(y,x % y); 
} 
int main() { 
    int n ,m;
    scanf("%d%d",&n,&m); int cnt = 0; 
    for(int i = 1;i <= n;++ i) {scanf("%d",a + i);if(a[i] > m)cnt ++; } 
    int num = m; 
    for(int i = 1;i <= n;++ i) num = gcd(a[i],num); 
    int ans = 0; 
    if(m % num) ans = (m / num) ; 
    else ans = m / num; 
    printf("%d\n",ans); 
    return 0; 
} 

Wannafly 22A

标签:return   \n   答案   print   就是   gcd   ++   algorithm   for   

原文地址:https://www.cnblogs.com/sssy/p/9498838.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!