目录

  • 知识点:同余、逆元、拓欧
  • 题意
  • 思路
  • 代码

知识点:同余、逆元、拓欧

题目链接

题意

b进制数最多使某一位减小使得新数是b+1的乘积,不能减输出-1,不用减输出0,否则输出减小的位的下标和减小后的新位。

思路

新数N是b+1的乘积转换为N%(b+1)=0,我们要让原数n取模为零,先算出原数的模m,根据同余的性质,n≡m(modb+1)⟺n−m≡0(modb+1)n\equiv m\quad (mod \ b+1) \iff n-m\equiv 0\quad (mod \ b+1)n≡m(mod b+1)⟺n−m≡0(mod b+1)。
找出减小m的方法,即找出ci(ci为新数)<ai(ai为原数)且(ai−ci)×bi≡m(modb+1)c_i(c_i为新数)<a_i(a_i为原数)且(a_i-c_i)\times b^i \equiv m\quad(mod \ b+1)ci​(ci​为新数)<ai​(ai​为原数)且(ai​−ci​)×bi≡m(mod b+1)(假设a,c逆序,i从0开始),就找出ai−ci≡m×(bi)−1(modb+1)a_i-c_i \equiv m\times (b^i)^{-1} \quad(mod \ b+1)ai​−ci​≡m×(bi)−1(mod b+1)
容易求出m,枚举i求出bib^ibi的逆元,与m相乘再判断得到的数字是否小于aia_iai​即可。

代码

#include<bits/stdc++.h>
#define ll long long
using namespace std;
const ll N=2e5+10;ll b,n;
ll arr[N];
ll sum[N];//实际只取sum[n]=m
ll invmuti[N];//b^i的逆元ll exgcd(ll a,ll b,ll &x,ll &y)
{if(b==0) return x=1,y=0,a;ll t=exgcd(b,a%b,y,x);y-=a/b*x;return t;
}
//拓欧求逆元,a和mod已经互质(b与b+1互质(没有公因子)
//b^i肯定与b+1互质(没有公因子))
inline ll inv(ll a,ll mod)
{ll x,y;exgcd(a,mod,x,y);return (x%mod+abs(mod))%mod;//最小非负解
}void solve()
{scanf("%lld%lld",&b,&n);for(ll i=0;i<n;i++) scanf("%lld",&arr[i]);reverse(arr,arr+n);ll muti=1;//b^ifor(ll i=1;i<=n;i++){sum[i]=(sum[i-1]+arr[i-1]*muti%(b+1))%(b+1);invmuti[i-1]=inv(muti,b+1);muti=muti*b%(b+1);}ll d=sum[n];if(d==0)//原数已经整除{puts("0 0");return;}reverse(arr,arr+n);for(ll i=0;i<n;i++){ll t=d*invmuti[n-1-i]%(b+1);if(t>arr[i]) continue;//a[i]-c[i]大于a[i]跳过printf("%lld %lld\n",i+1,arr[i]-t);return;}puts("-1 -1");
}int main()
{//  ll t;
//  scanf("%lld",&t);
//  init();
//  cout<<invfact[1]<<endl;
//  while(t--)solve();return 0;
}

2021-2022 ACM-ICPC Brazil Subregional Programming Contest C Creating Multiples相关推荐

  1. 2019-2020 ACM ICPC Brazil Subregional Programming Contest E.Exhibition of Clownfish

    我搬运我自己应该算原创吧 题目 题意 题解 题意 某水族馆有一种神奇的

  2. 2022-2023 ICPC Brazil Subregional Programming Contest

    文章目录 前言 A. Finding Maximal Non-Trivial Monotones D. Displacing Particles E. Eliminating Ballons F. M ...

  3. 比赛题目训练系列17 (2020-2021 ACM-ICPC Brazil Subregional Programming Contest)

    比赛题目训练系列17 (2020-2021 ACM-ICPC Brazil Subregional Programming Contest) 训练网址 E. Party Company 给一棵树 (n ...

  4. 2018-2019 ACM-ICPC Brazil Subregional Programming Contest 题解

    2018-2019 ACM-ICPC Brazil Subregional Programming Contest 题解 比赛链接:2018-2019 ACM-ICPC Brazil Subregio ...

  5. 2019-2020 ACM-ICPC Brazil Subregional Programming Contest

    A.给你一堆圆,问你能否从左上角走到右下角不经过所有圆 一种经典套路题,考虑使用并查集判联通,如果两圆相交,就把他们合并,如果圆与边界相交则合并圆与边界 最后判断一下边界能否互相抵达即可 代码: #i ...

  6. A. Slackline Adventure(思维 + 莫比乌斯)(2018-2019 ACM-ICPC Brazil Subregional Programming Contest)

    A. Slackline Adventure 考虑枚举每个矩形的长跟宽,再统计这个矩形能在坐标轴上出现几次(同行相邻同列相邻的单独算),然后有如下式子: 2×∑i=1n−1∑j=1m−1(n−i)(m ...

  7. Codeforces Gym101473 F.Triangles-前缀和 (2013-2014 ACM-ICPC Brazil Subregional Programming Contest)...

    前缀和. 代码: 1 #include<iostream>2 #include<cstring>3 #include<cstdio>4 #include<cm ...

  8. 2018 ACM ICPC Arabella Collegiate Programming Contest A

    Multiplication operation is not always easy! For example, it is hard to calculate 27 × 20 using your ...

  9. A - Multiplication Dilemma (思维)( 2018 ACM ICPC Arabella Collegiate Programming Contest)

    滴答滴答---题目链接 Multiplication operation is not always easy! For example, it is hard to calculate 27 × 2 ...

  10. 2021-2022 ACM-ICPC Brazil Subregional Programming Contest N. No Luck

    原题链接 题意:大意是求区间内大于等于某个数的个数.这个题有个坑,就是给你l,r,但是查询的是l + 1 ~ r,因为那些人只有退役之后才会关注别人,所以需要细节~~~ 解法:树状数组.询问和数组统一 ...

最新文章

  1. svg text换行_5分钟看懂SVG反爬虫原理与绕过实战 | 知了干货分享
  2. 通过ping命令测试主机与虚拟机之间是否连通
  3. 基于Spring Boot不同的环境使用不同的配置方法
  4. java 并行_在使用Java并行流之前要三思而后行
  5. 【简报】超棒的免费Web字体服务:Adobe Edge Web字体
  6. Class.forName()、Class.forName().newInstance() 、New 三者区别!
  7. python有哪些用途-Python语言有哪些用途
  8. 如何用stata画莫兰散点图_图说meta十四:漏斗图暨Stata软件使用方法简介
  9. 什么是激励函数?(代码+详细注释)
  10. java实现NC数据等值线等值面可视化
  11. R语言—Shiny框架
  12. spectral clustering谱聚类论文解读(上)
  13. 如何使用 IntelliJ IDEA中配置PHP开发环境 及项目搭建
  14. Python模拟post提交表单数据 ——某二手车网站回拨电话的分析与利用
  15. shift键计算机功能,分享新手必会的快捷键:shift键的11个妙用!
  16. raw socket (DELPHI开发平台)
  17. 解决:Short read of DER length
  18. HTML5高度还原复古24层魔塔网页版小游戏源码
  19. Win常见文件后缀名
  20. libvirt下获取虚机内存使用

热门文章

  1. Ceph Recovery分析
  2. 【计蒜客 - 蓝桥训练】蒜厂年会(循环数列的最大子段和)
  3. cpython-36m-x86_64-linux-gnu.so undefined symbol玄学解决
  4. 常见几种操作系统简介
  5. spark graphx的Triangle三角形计数算法使用示例
  6. 不良资产证券化未来推进需跨越的障碍
  7. HTTP的请求方法OPTIONS
  8. SSL证书安装后网站还是显示不安全
  9. python优雅编程之旅
  10. 计算机专业需不需要英语翻译,谈计算机专业英语翻译的方法.doc