E. Border(裴蜀定理)

news2024/10/6 20:38:24

Problem - E - Codeforces

太空人纳塔莎抵达了火星。她知道火星人非常贫穷。为了保障火星公民更好的生活,他们的皇帝决定向每个游客征收税费。纳塔莎是地球的居民,因此她必须支付进入火星领土所需的税费。

火星上有n种纸币面额:第i种纸币的面额为ai。纳塔莎拥有每种面额的无限张纸币。

火星人手指有k个,因此他们使用基于k的数字系统。此外,火星人认为数字d(在基于k的数字系统中)是神圣的。因此,如果纳塔莎在以基于k的数字系统表示的税款金额的最后一位是数字d,则火星人会感到高兴。不幸的是,纳塔莎目前不知道火星人的神圣数字。

确定哪些值d可以使纳塔莎让火星人高兴。

纳塔莎只能使用自己的纸币。火星人不会找零。

输入格式 第一行包含两个整数n和k(1≤n≤100000,2≤k≤100000)——纸币面额数量和火星上的数字系统基数。

第二行包含n个整数a1,a2,…,an(1≤ai≤109)——火星上纸币的面额。

输出格式 第一行输出可以让火星人高兴的d值的数量。

第二行按升序输出所有这些数字。

以十进制形式打印所有数字。

Examples

Input

Copy

2 8
12 20

Output

Copy

2
0 4 

Input

Copy

3 10
10 20 30

Output

Copy

1
0 

考虑第一个测试用例,它使用八进制数字系统。

如果你拿了一张面额为12的纸币,你会得到148(八进制下)的金额。最后一位是8。

如果你同时拿了一张面额为12和一张面额为20的纸币,总金额将会是32。在八进制下,它是408。最后一位是8。

如果你拿了两张面额为20的纸币,总金额将会是40,在八进制下是508。最后一位是8。

没有其他除了08和48以外的数值可以获得。而08和48这两个数字也可以通过其他方式获得。

第二个测试用例使用十进制数字系统。所有纸币面额的末尾都是0,所以纳塔莎只能给火星人以十进制表示也以0结尾的金额。

题解:
可以构成的总钱数可以这样表达

c = b1*a1 + b2*a2 + b3*a3 + ... bn*an

数组b代表每一个种类的钱取多少张

根据裴蜀定理

定理:

裴蜀定理(或贝祖定理,Bézout's identity)得名于法国数学家艾蒂安·裴蜀,说明了对任何整数a、b和它们的最大公约数d,关于未知数x和y的线性不定方程(称为裴蜀等式):若a,b是整数,且GCD(a,b)=d,那么对于任意的整数x,y,ax+by都一定是d的倍数,特别地,一定存在整数x,y,使ax+by=d成立。

我们知道g = gcd(a1,a2,...an)

c一定是g的倍数

题中问总钱数%k的有多少种

(b1*a1 + b2*a2 + b3*a3 + ... bn*an )%k

%k的操作又可以用减法来代替,

b1*a1 + b2*a2 + b3*a3 + ... bn*an - y*k

那么答案就变成了 g = gcd(g,k)的倍数

枚举0 ~ k - 1即可

#include <cstdio>
#include <cstring>
#include <algorithm>
#include<iostream>
#include<vector>
#include<set>
#include<map>
#include<cmath>
#include<queue>
using namespace std;
typedef long long ll;
 #define int long long
typedef pair<int,int> PII;
typedef unsigned long long ULL;
const int N = 3e5 + 10;
int mod = 1e9 + 7;
void solve()
{
	int n,k;
	cin >> n >> k;
	int g = k;
	for(int i = 1;i <= n;i++)
	{
		int x;
		cin >> x;
		g = __gcd(g,x);
	}
	cout << k/g <<"\n";
	for(int i = 0;i < k;i += g)
	cout <<i <<" ";
}
signed main()
{
	ios::sync_with_stdio(0 );
	cin.tie(0);cout.tie(0);
	int t = 1;
//	cin >> t;
	while(t--)
	{
		solve(); 
	}
}

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/539641.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

TTL、 RS-232,RS-485的区别

TTL、 RS-232&#xff0c;RS-485的区别 参考:【gt】TTL&#xff0c; RS-232&#xff0c;RS-485的区别 前言&#xff1a;串口、UART口、COM口、USB口是指的物理接口形式(硬件)。而TTL、RS-232、RS-485是指的电平标准(电信号)。 TTL &#xff1a;全双工 &#xff0c;逻辑0对应…

深度学习实战30-AIGC项目:自动生成思维导图文件,解放双手

大家好&#xff0c;我是微学AI&#xff0c;今天给大家介绍一下深度学习实战30-AIGC项目&#xff1a;自动生成思维导图文件&#xff0c;解放双手&#xff0c;思维导图是一种常见的工具&#xff0c;用于将复杂的信息和概念以图形化方式展示出来。AIGC项目旨在将这种思维导图的创建…

GNU C 语言的常用扩展

本文摘自《奔跑吧 Linux 内核&#xff08;第二版&#xff09;》2.2 Linux 内核中常用的 C 语言技巧 读到这本书的这一小节时&#xff0c;感觉其中不少技巧在项目中有遇到过&#xff0c;有必要做个笔记&#xff0c;方便以后查阅。 文章目录 前言1.语句表达式2.变长数组3. case 的…

Linux内核(十五)sysrq 详解 II —— 代码框架详解

文章目录 sysrq模块初始化流程图sysrq模块代码详解sysrq产生kernel crash事件流程sysrq 整体框架图sysrq 框架中添加自定义实例 Linux 版本&#xff1a;Linux version 3.18.24 sysrq模块初始化流程图 sysrq模块源码路径&#xff1a;linux-3.18.24.x/drivers/tty/sysrq.c 编译…

Unity3D :Animator Controller

推荐&#xff1a;将 NSDT场景编辑器 加入你的3D工具链 3D工具集&#xff1a; NSDT简石数字孪生 Animator Controller Animator Controller 允许您为角色或对象安排和维护一组动画剪辑以及关联的动画过渡。在大多数情况下&#xff0c;拥有多个动画并在满足某些游戏条件时在这些…

就业内推 | 国企专场,HCIE、CCIE认证优先,最高20k*15薪

01 银河互联网电视有限公司 &#x1f537;招聘岗位&#xff1a;网络运维工程师 &#x1f537;职责描述&#xff1a; 1、负责IDC网络方向的运维服务&#xff1b; 2、负责日常紧急变更&#xff0c;撰写上线变更方案等文档工作&#xff1b; 3、负责应急问题处理、控制变更风险&am…

CAN周期波动优化方法

摘要&#xff1a; 如果遇到报文周期偏大的问题该从何下手&#xff0c;或者说有哪些解决办法呢&#xff1f; 对于车载控制器来说&#xff0c;CAN周期的波动通常是有严格的标准&#xff0c;国标要求如下&#xff0c;基于国标&#xff0c;各个主机厂在这一块稍微有些差异&#xf…

遇到系统无法访问此文件问题怎么办?

昨天我整理了一下自己喜欢的照片&#xff0c;然后将其分门别类地归纳起来&#xff0c;然后将其复制到了另一个硬盘做了一下简单的备份。后面又想到了之前在某篇文章中貌似提到过什么异地备份的说法&#xff0c;一想到自己的OneDrive中还有点空间&#xff0c;所以就想把它们存到…

记一次docker迁移目录后oracle11g启动报错问题

迁移docker目录后启动oracle报错&#xff1a; 容器启动失败&#xff0c;无法查看日志&#xff0c;分析是文件目录权限问题&#xff0c;迁移后的目录是/home/docker&#xff0c;因此执行chmod -R 777 /home/docker ,给迁移后目录全局权限。 然后启动容器&#xff0c;发现可以启…

基层管理岗和技术岗如何抉择?

基层管理岗和技术岗如何抉择&#xff1f; 体制内&#xff0c;现为技术研发岗&#xff0c;33岁&#xff0c;本想沿着现在的技术序列走&#xff0c;到时间再申请专家&#xff0c;但近期发现专家没有调配资源的能力&#xff0c;没有办法组建团队。现纠结是否争取管理路线。 技术…

【AIGC】ChatGPT联动脑机接口实验,用脑电波回邮件

国外某公司发现&#xff0c;ChatGPT已经可以用于脑机接口实验了。不过也有眼尖的网友点出&#xff1a;这个过程是不是提前预设好回复邮件的prompt&#xff0c;非常重要。 ChatGPT&#xff0c;已经可以用于脑机接口实验了&#xff01; 近日&#xff0c;Araya公司的一个团队&am…

代码随想录-链表

基础知识 链表是一种通过指针串联在一起的线性结构。在内存中不是连续分布的&#xff0c;分配机制取决于操作系统内存管理。 类型 三种类型&#xff1a;单链表、双链表、循环链表 单链表&#xff1a;每个节点由两部分组成&#xff0c;数据域和指针域&#xff08;存放指向下…

注解与反射

1、注解&#xff08;Annotation&#xff09; 1.1、何为注解&#xff1f; 注解&#xff08;Annotation&#xff09;是从JDK5.0开始引入的技术&#xff0c;以注解名在代码中存在&#xff0c;例如&#xff1a; Override&#xff1a;限定重写父类方法&#xff0c;该注解只能用于方…

Word控件Spire.Doc 【文本框】教程(5): 插入、读取和删除表格

Spire.Doc for .NET是一款专门对 Word 文档进行操作的 .NET 类库。在于帮助开发人员无需安装 Microsoft Word情况下&#xff0c;轻松快捷高效地创建、编辑、转换和打印 Microsoft Word 文档。拥有近10年专业开发经验Spire系列办公文档开发工具&#xff0c;专注于创建、编辑、转…

提问超时~Zabbix Meetup成都站棒在哪里?

图片 2023年5月13日&#xff0c;迎着初夏灿烂的阳光&#xff0c;Zabbix Meetup首次在成都举办。本次活动吸引了来自Zabbix社区用户、合作伙伴等约50余位伙伴热情参与&#xff0c;倾听来自原厂培训师、社区资深用户们关于Zabbix的精彩内容分享。还有定制周边礼品和晚宴深入交流…

防火墙之iptables

防火墙之iptables 一.iptables概述 Linux 系统的防火墙 &#xff1a;IP信息包过滤系统&#xff0c;它实际上由两个组件netfilter 和 iptables组成。 主要工作在网络层&#xff0c;针对IP数据包。体现在对包内的IP地址、端口、协议等信息的处理上。二.netfilter/iptables 关系…

《终身成长》笔记二——失败挫折的意义

目录 经典摘录 思维模式改变了失败的意义/如何看待失败与成功 思维模式与抑郁症 努力后还是失败的事实会让自己找不到借口&#xff0c;是固定型思维模式者们最大的恐惧 问与答 经典摘录 思维模式改变了失败的意义/如何看待失败与成功 《纽约时报》上的一篇文章指出的&…

学生档案管理系统(SpringBoot,SSM,Maven,H-UI,Mysql)

【项目功能介绍】 本系统包含学生,后台管理员二种角色的用户 学生的功能包含: 登录,退出,修改密码,用户信息查看与修改,首页信息展示,轮播图,栏目及栏目文章列表,我的课程,我的课表,我的成绩,意见反馈,我的意见反馈。 后台管理员的功能包含: 登录,退出,修改密码,管理员管理,…

【计算机组成原理】实验一

文章目录 实验一 数据传送实验1. 实验目的2. 实验仪器3. 原理概述4. 实验内容步骤4.1 手动实验环境的建立4.2 手控传送实验 5. 实验结论及问题讨论 实验一 数据传送实验 1. 实验目的 2. 实验仪器 3. 原理概述 4. 实验内容步骤 4.1 手动实验环境的建立 1)初始待令状态 上电或…

监控kafka topic,钉钉报警

1、需求的诞生 前几天公司我们部门需要演示一个应用&#xff0c;应用依赖kafka的数据&#xff0c;但是kafka的数据来自其他部门的投递。 一些原因导致数据无法给到&#xff0c;导致我们部门的演示也很有问题&#xff0c;所以想做一个简单的kafka topic的监控&#xff0c;在没…