原题地址 题目描述 有一个计数器,计数器的初始值为0,每次操作你可以把计数器的值加上a1,a2,...,an中的任意一个整数,操作次数不限(可以为0次),问计数器的值对m取模后有几种可能. 输入描述: 第一行两个整数n,m接下来一行n个整数表示a1,a2,...,an1≤n≤1001≤m,a1,a2,...,an≤1000000000 输出描述: 输出一个整数表示答案 示例1 输入 复制 3 6 6 4 8 输出 复制 3 题解:假设K1为A1取的个数:根据题意题目变成a1*k1+a2*k2+a…
https://www.nowcoder.com/acm/contest/160/A 题目描述 有一个计数器,计数器的初始值为0,每次操作你可以把计数器的值加上a1,a2,...,an中的任意一个整数,操作次数不限(可以为0次),问计数器的值对m取模后有几种可能. 输入描述: 第一行两个整数n,m接下来一行n个整数表示a1,a2...an 1≤n≤1001≤m,a1,a2,...,an≤1000000000 输出描述: 输出一个整数表示答案 输入例子: 3 6 6 4 8 输出例子: 3 -->…
Wannafly挑战赛22游记 幸运的人都是相似的,不幸的人各有各的不幸. --题记 A-计数器 题目大意: 有一个计数器,计数器的初始值为\(0\),每次操作你可以把计数器的值加上\(a_1,a_2,\ldots,a_n\)中的任意一个整数,操作次数不限(可以为\(0\)次),问计数器的值对\(m\)取模后有几种可能. 思路: 由裴蜀定理易得,答案即为\(\frac m{\gcd(m,a_1,a_2,\ldots,a_n)}\). 源代码: #include<cstdio> #include…
裴蜀定理:若a,b是整数,且gcd(a,b)=d,那么对于任意的整数x,y,ax+by都一定是d的倍数,特别地,一定存在整数x,y,使ax+by=d成立. 所以最后能得到的最小燃料书就是gcd,所以直接对因数计数然后找最小的个数大于k的因数就是答案 #include<iostream> #include<cstdio> #include<map> using namespace std; const int N=1005; int n,k,a[N],mx; map<…
欧几里得算法 又称辗转相除法 迭代求两数 gcd 的做法 由 (a,b) = (a,ka+b) 的性质:gcd(a,b) = gcd(b,a mod b) int gcd(int a,int b){ if(b==) return a; return gcd(b,a%b); } O(logn) 裴蜀定理: 设 (a,b) = d,则对任意整数 x,y,有 d|(ax+by) 成立: 特别地,一定存在 x,y 满足 ax+by = d 等价的表述:不定方程 ax+by = c(a,b,c 为整数)…
BZOJ 1441:Min Description 给出n个数(A1...An)现求一组整数序列(X1...Xn)使得S=A1*X1+...An*Xn>0,且S的值最小 Input 第一行给出数字N,代表有N个数 下面一行给出N个数 Output S的最小值 Sample Input 24059 -1782 Sample Output 99 HINT   Source 分析:相当于拓展欧几里得的n次推广. 代码: #include"bits/stdc++.h" #define d…
2018-03-11 17:39:22 一.辗转相除法 在数学中,辗转相除法,又称欧几里得算法(英语:Euclidean algorithm),是求最大公约数的算法.辗转相除法首次出现于欧几里得的<几何原本>(第VII卷,命题i和ii)中,而在中国则可以追溯至东汉出现的<九章算术>.辗转相除法基于如下原理:两个整数的最大公约数等于其中较小的数和两数的差的最大公约数.例如,252和105的最大公约数是21(252 = 21 × 12:105 = 21 × 5):因为252 − 105…
题目传送门(内部题22) 输入格式 第一行有$2$个整数$n,k$.第二行有$n$个正整数$a_i$. 输出格式 第一行有一个整数$s$,表示可以生成的非负整数的个数.第二行有$s$个可以生成的非负整数. 样例 样例输入: 2 84 12 样例输出: 20 4 数据范围与提示 样例解释: 有无穷种方案可以得到$x=0$,例如:$b_1=0$.$b_2=0$,$b_1=2$.$b_2=0$,$b_1=1$.$b_2=1$等等.有无穷种方案可以得到$x=4$,例如:$b_1=1$.$b_2=0$,$…
2299: [HAOI2011]向量 Time Limit: 10 Sec  Memory Limit: 256 MBSubmit: 1118  Solved: 488[Submit][Status][Discuss] Description 给你一对数a,b,你可以任意使用(a,b), (a,-b), (-a,b), (-a,-b), (b,a), (b,-a), (-b,a), (-b,-a)这些向量,问你能不能拼出另一个向量(x,y). 说明:这里的拼就是使得你选出的向量之和为(x,y)…
1441: Min Time Limit: 5 Sec  Memory Limit: 64 MBSubmit: 471  Solved: 314[Submit][Status][Discuss] Description 给出n个数(A1...An)现求一组整数序列(X1...Xn)使得S=A1*X1+...An*Xn>0,且S的值最小 Input 第一行给出数字N,代表有N个数下面一行给出N个数 Output S的最小值 Sample Input 24059 -1782 Sample Outpu…