题目大意:给出三个十进制下的数字 A ,B ,C ,问是否存在一个 k ,满足在 k 进制下有 A * B = C

题目分析:需要观察出进制与 A * B 和 C 的大小之间具有单调性,如果进制较小的话,那么进位自然就会变多,从而使得位数边长,整体数字就会变大,反之亦然,所以据此,可以直接二分答案,用一个 check 进行检查,需要注意的是答案会爆 long long,所以整体用 __int128 进行计算即可,二分的下限设置为所有数字的最大值 + 1,上限设置为 1e20

代码:

//#pragma GCC optimize(2)
//#pragma GCC optimize("Ofast","inline","-ffast-math")
//#pragma GCC target("avx,sse2,sse3,sse4,mmx")
#include<iostream>
#include<cstdio>
#include<string>
#include<ctime>
#include<cmath>
#include<cstring>
#include<algorithm>
#include<stack>
#include<climits>
#include<queue>
#include<map>
#include<set>
#include<sstream>
#include<cassert>
#include<bitset>
#include<unordered_map>
using namespace std;typedef __int128 LL;typedef unsigned long long ull;const int inf=0x3f3f3f3f;const int N=1e3+100;template <typename T>inline void read(T& t){t=0;register char ch=getchar();while(!('0'<=ch&&ch<='9')){if(ch=='-') t*=-1;ch=getchar();}while(('0'<=ch&&ch<='9')){t=((t<<1)+(t<<3))+ch-'0';ch=getchar();}
}template <typename T>inline void write(T x){if(x<0) putchar('-'),x=~(x-1);int s[50],top=0;while(x) s[++top]=x%10,x/=10;if(!top) s[++top]=0;while(top) putchar(s[top--]+'0');
}LL a[N],b[N],c[N],cc[N*N];int la,lb,lc;LL l=0,r=1e20;void input(int& n,LL a[])
{scanf("%d",&n);n--;for(int i=n;i>=0;i--){read(a[i]);l=max(l,a[i]+1);}
}int check(int pos)//1:大了,-1:小了
{if(pos>lc)return -1;if(pos<lc)return 1;for(int i=pos;i>=0;i--){if(cc[i]>c[i])return -1;if(cc[i]<c[i])return 1;}return 0;
}int cal(LL mid)
{memset(cc,0,sizeof(cc));for(int i=0;i<=la;i++)for(int j=0;j<=lb;j++)cc[i+j]+=a[i]*b[j];int pos=0;while(pos<=la+lb||cc[pos]){cc[pos+1]+=cc[pos]/mid;cc[pos]%=mid;pos++;}return check(pos-1);
}int main()
{
#ifndef ONLINE_JUDGE
//  freopen("data.in.txt","r",stdin);
//  freopen("data.out.txt","w",stdout);
#endif
//  ios::sync_with_stdio(false);input(la,a);input(lb,b);input(lc,c);while(l<=r){LL mid=l+r>>1;int t=cal(mid);if(t==0){write(mid);return 0;}else if(t==1)r=mid-1;else if(t==-1)l=mid+1;}puts("impossible");return 0;
}

中石油训练赛 - Historical Maths(二分)相关推荐

  1. 中石油训练赛 - High Load Database(二分+记忆化)

    题目链接:点击查看 题目大意:给出一个长度为 n 的数列,再给出 m 次询问,每次询问给出一个阈值 x ,问最少将数列分割成多少段,可以使得每一段的总和都不超过 x,无解的话输出 Impossible ...

  2. 中石油训练赛 - 小说(最短路+二分)

    题目链接:点击查看 题目大意:给出一个无环无向图,以及k,定义答案是点1到点n的任意一条路径上,所经过的所有边的权值中的第k大值,求答案的最小值.(题目是中文题面,没看懂大意可以直接去看原题目..) ...

  3. 中石油训练赛 - Get Strong(dfs双向搜索+二分)

    题目大意:给出 n 个武器,每个武器可以升级最多 k[ i ] 次,每次升级需要花费 c[ i ][ j ] 个单位的金币,性能可以提升 w[ i ][ j ] 个单位,现在给出 m 个金币,问如何分 ...

  4. 中石油训练赛 - Fermat‘s Optimization Problem(Java高精度运算+二分)

    题目大意:给出误差函数 ,现在给出 z 和 n,要求求出 x 和 y ,使得函数 F 的取值最小 题目分析:首先数据范围是幂次级别的,1e5 的 10 次方,也就是 1e50 次方,需要用到大数,我用 ...

  5. 中石油训练赛 - Trading Cards(最大权闭合子图)

    题目大意:给出 n 个卡片,可以自由买卖,且价格都是相同的,再给出 m 个集合,如果已经得到了其中一个集合中的卡片,那么可以获得该集合的收益,问如何操作可以使得收益最大化 题目分析:最大权闭合子图的模 ...

  6. 中石油训练赛 - Watch Later(状压dp)

    题目链接:点击查看 题目大意: 给出一个长度为 n 的字符串,字符串中共有 k 种不同的字符,现在问删除掉所有字符的最小操作数,对于每种字符需要确定一个先后顺序,每次需要删除掉当前所有的这种字符才能去 ...

  7. 中石油训练赛 - Swapping Places(字典序最小的拓扑排序)

    题目链接:点击查看 题目大意:给出 s 个字符串表示种类,再给出 m 个朋友关系,表示两个种类的动物是朋友,现在给出一个长度为 n 的种类排列,规定相邻两个是朋友的种类的动物可以交换位置,问如何操作, ...

  8. 中石油训练赛 - Gone Fishing(固定大小的圆可以覆盖最多的点)

    题目大意:在二维平面中给出 n 个点,再给出一个固定大小的圆,问如何放置这个圆可以使其覆盖最多的点 题目分析:首先不难想到一种 n^3 的做法,就是两层循环去枚举两个点,因为两个不同的点就可以确定下来 ...

  9. 中石油训练赛 - Russian Dolls on the Christmas Tree(树上启发式合并/主席树)

    题目链接:点击查看 题目大意:给出一棵 n 个节点的树,以点 1 为根,现在对于每个节点作为根的子树求解:子树中有多少个编号不相交的连续子段,如:1 2 4 5 7,共有三个连续的段,分别为 [ 1 ...

最新文章

  1. VarGFaceNet:地平线提出轻量级、有效可变组卷积的人脸识别网络
  2. QT中实现QLineEdit变成圆角以及QCombox大半空白,小部分下拉框样式
  3. Hibernate开发中常见错误总结
  4. 存储过程中执行动态Sql语句
  5. c++11新特性(4) lambda捕捉块
  6. linux下后台启动springboot项目
  7. 如何成为一名架构师,架构师成长之路(转)
  8. python 僵尸进程孤儿进程
  9. iphone 通过获取IMSI判断运营商
  10. apt-get安装与卸载
  11. STM32F103C8T6 红外测距模块测量距离(SHARP GP2Y0A21YK0F)使用CubeMx生成HAL库(ADC)
  12. PHY寄存器驱动调试总结
  13. buuctf:Ping Ping Ping(命令执行)
  14. 【天光学术】信息管理论文:计算机信息管理应用于网络安全的策略(节选)
  15. SAP FICO常用报表和事务码大全
  16. 计算机网络 408考纲,2018考研计算机408考试大纲.pdf
  17. linux美化文件,Linux 终端美化 - Oh My Zsh
  18. 【04】拟合算法:01-拟合算法模型讲解
  19. 深度技术 GHOSTXP V6.0 快速装机个人版 (NTFS格式)
  20. 亚马逊FBA头程物流选择注意事项有哪些?

热门文章

  1. 计算机文档vmware安装虚拟机,教你如何用VMware虚拟机安装系统.docx
  2. mysql函数封装_Mysql对文件操作的封装
  3. MySQL失效情况(范围查询,字段运算)
  4. 认识微服务-服务架构演变
  5. Nginx服务的信号控制
  6. EventLoop 与Channel 的关联
  7. MyBatis设计模式总结
  8. 什么是Spring inner beans?
  9. 微服务架构下的组件需求
  10. log4j2 异步日志