整体思路

  • 对于任意的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. 修改文件属性(attrib)

    atrrib 命令: // 描述: (Attribute) 显示,设置或删除分配给文件或目录的属性. 如果在没有参数的情况下使用,attrib将显示当前目录中所有文件的属性. // 语法: attri ...

  2. 英语口语练习系列-C04-学校生活

    连接到英语口语系列总分类 连接到上一章常用问句 登鹳雀楼 登鹳雀楼 唐代:王之涣 白日依山尽,黄河入海流. 欲穷千里目,更上一层楼. He is a fraternity brother. 他是兄弟会 ...

  3. Django 简介

    一  MVC  与 MTV 模型 (1)MVC C: controller 控制器(url分发和视图函数) V: 存放html文件 M: model:数据库操作 Web服务器开发领域里著名的MVC模式 ...

  4. C#基础知识之面向对象以及面向对象的三大特性

    在C#基础知识之类和结构体中我详细记录了类.类成员.重载.重写.继承等知识总结.这里就记录一下对面向对象和面向对象三大特性的广义理解. 一.理解面向对象 类是面向对象编程的基本单元,面向对象思想其实就 ...

  5. flink Standalone Cluster

    Requirements Software Requirements Flink runs on all UNIX-like environments, e.g. Linux, Mac OS X, a ...

  6. (八)Index and Query a Document

    Let’s now put something into our customer index. We’ll index a simple customer document into the cus ...

  7. mybatis的where和if标签配合使用

    where标签用于简化sql的书写,if标签用于判断.大概的使用如下 <select id="getCountByPageInfo" parameterType=" ...

  8. Java的selenium代码随笔(1)

    package ShareClass; import java.awt.AWTException;import java.awt.Robot;import java.awt.Toolkit;impor ...

  9. Shell命令-文件及目录操作之cp、find

    文件及目录操作 - cp.find 1.cp:复制文件或目录 cp命令的功能说明 cp命令用于复制文件或目录. cp命令的语法格式 cp [OPTION]... SOURCE... DIRECTORY ...

  10. Java多线程10:join()方法

    一.前言 通过一个简单的例子引入join()方法 public class Thread01 extends Thread{ @Override public void run() { for(int ...