整体思路

  • 对于任意的p,q,r,可能使得p*q=r的最小进制应该是p,q,r三个数的所有数位中最大的数字+1,例如,6,9,42三个数中所有数位中最大的数字是9,故可能成立的最小进制是9+1,即10。题目告诉我们,最大进制B<=16,这就确定了进制的最小范围。

  • 我们设计以下函数来简化程序流程:

    1. int minB(),根据p,q,r计算最小进制
    2. int nBto10(int num, int B),将B进制的数字num转化为10进制数
    3. bool test(int B),测试p,q,r在进制B条件下是否成立
  • 为了简化函数形参,我们把p,q,r设置为全局变量

例程

#include<iostream>
using namespace std;
int p, q, r; //定义为全局变量,可以简化函数参数传递 bool test(int B);
int nBto10(int num, int B);
int minB(); //三个函数的声明 int main(){
int jz;
cin>>p>>q>>r;
jz=minB();
while(jz<=16){ //从最小进制到16依次测试
if(test(jz)){
cout<<jz; //成功即停止循环
break;
}
jz++;
}
if(jz==17) cout<<"0"; //jz==17说明没有符合条件的进制
return 0;
} bool test(int B){
int P = nBto10(p, B); //B进制转换为10进制
int Q = nBto10(q, B);
int R = nBto10(r, B);
if(P*Q==R) return true;
else return false;
} int nBto10(int num, int B){
int result=0;
int i=1;
while(num){ //进制转换过程
result+=num%10*i;
num/=10;
i*=B;
}
return result;
} int minB(){
int max=0;
int P=p, Q=q, R=r; //求最大数位max
while(P) { if(max<P%10) max=P%10; P/=10; }
while(Q) { if(max<Q%10) max=Q%10; Q/=10; }
while(R) { if(max<R%10) max=R%10; R/=10; }
return max+1; //别忘记+1
}

NOI-OJ 1.13 ID:34 确定进制的更多相关文章

  1. jstack:将Process Explorer中看到的进程ID做16进制转换,到ThreadDump中加上0x 前缀即能找到对应线程(转)

    原文链接:http://www.iteye.com/topic/1133941 症状: 使用Eclipse win 64位版本,indigo及kepler都重现了,使用tomcat 6.0.39,jd ...

  2. 【九度OJ】题目1208:10进制 VS 2进制 解题报告

    [九度OJ]题目1208:10进制 VS 2进制 解题报告 标签(空格分隔): 九度OJ 原题地址:http://ac.jobdu.com/problem.php?pid=1208 题目描述: 对于一 ...

  3. 新浪微博id的62进制转换

    某条微博链接 某条微博的链接如下,同样省略了后面的无关参数 http://weibo.com/2803301701/CeaOU15IT CeaOU15IT为这条微博的mid,与之相对应的还有一个id, ...

  4. 九度OJ 1118:数制转换 (进制转换)

    时间限制:1 秒 内存限制:32 兆 特殊判题:否 提交:3873 解决:1494 题目描述: 求任意两个不同进制非负整数的转换(2进制-16进制),所给整数在long所能表达的范围之内.     不 ...

  5. 13南理工test01:进制转化

    #include<iostream> #include<cstdlib> using namespace std; int main() { //cout<<5/2 ...

  6. light oj 1045 - Digits of Factorial K进制下N!的位数

    1045 - Digits of Factorial Factorial of an integer is defined by the following function f(0) = 1 f(n ...

  7. Java进制转换, 数据类型, 运算符

    1:进制转换 转换规则: 先把数据的每一位上的系数乘以对应基数的次幂(低位从零开始),然后相加即可 十进制到其他进制 规则:除基取余,直到商为0,最后将余数反转 十进制到二进制: 除2取余,直到商为0 ...

  8. php利用32进制实现对id加密解密

    前言 最近在项目中遇到一个问题,当前用户分享一个邀请码给好友,好友根据邀请码注册成为新用户之后,则成为当前用户的下级,特定条件下,可以得到下级用户的一系列返利.这里要实现的就是根据当前用户的id,生成 ...

  9. Comet OJ - Contest #13 「佛御石之钵 -不碎的意志-」(hard)

    来源:Comet OJ - Contest #13 一眼并查集,然后发现这题 tmd 要卡常数的说卧槽... 发现这里又要用并查集跳过访问点,又要用并查集维护联通块,于是开俩并查集分别维护就好了 一开 ...

随机推荐

  1. ASP.NET -- WebForm -- ScriptManager 类

    ASP.NET -- WebForm -- ScriptManager 类 通过 ScriptManager 可注册随后将作为页面一部分呈现的脚本. 1. 注册并立即执行脚本. --RegisterS ...

  2. Offset Management For Apache Kafka With Apache Spark Streaming

    An ingest pattern that we commonly see being adopted at Cloudera customers is Apache Spark Streaming ...

  3. perf + Flame Graph火焰图分析程序性能

    1.perf命令简要介绍 性能调优时,我们通常需要分析查找到程序百分比高的热点代码片段,这便需要使用 perf record 记录单个函数级别的统计信息,并使用 perf report 来显示统计结果 ...

  4. nginx 499状态码

    Web服务器在用着nginx,在日志中偶尔会看到有499这个错误. rfc2616中,400-500间的错误码仅定义到了417,所以499应该是nginx自己定义的.后来想到读读nginx代码,疑问立 ...

  5. vue SSR : 原理(一)

    前言: 由于vue 单页面对seo搜索引擎不支持,vue官网给了一个解决方案是ssr服务端渲染来解决seo这个问题,最近看了很多关于ssr的文章, 决定总结下: 参考博客:从0开始,搭建Vue2.0的 ...

  6. WPF防止界面卡死并显示加载中效果

    原文:WPF防止界面卡死并显示加载中效果 网上貌似没有完整的WPF正在加载的例子,所以自己写了一个,希望能帮到有需要的同学 前台: <Window x:Class="WpfApplic ...

  7. Surjectivity is stable under base change

    Nowadays, I close a new small case. Proposition. For a surjective morphism between scheme $X\stackre ...

  8. 家庭记账本小程序之改(java web基础版五)

    实现修改消费账单 1.main_left.jsp中该部分,调用Servlet中的list方法 2.Servlet中的list方法,调用Dao层的list方法,跳转到list.jsp页面 3.Dao层的 ...

  9. qrcode & vue

    qrcode & vue $ yarn add qrcode.vue # OR $ npm i -S qrcode.vue https://www.npmjs.com/package/qrco ...

  10. kafka相关问题集锦

    参考地址:https://blog.csdn.net/gao23191879/article/details/80815078?utm_source=blogxgwz5 你在写java 版的 kafk ...