首页 > OpenJudge 2739 计算对数

OpenJudge 2739 计算对数

1.链接地址:

http://bailian.openjudge.cn/practice/2739/

2.题目:

总时间限制:
1000ms
内存限制:
65536kB
描述
给定两个正整数a和b。可以知道一定存在整数x,使得

x <= logab < x + 1

输出x
输入
第1行是测试数据的组数n,每组测试数据占2行,分别是a和b。每组测试数据之间有一个空行,每行数据不超过100个字符
输出
n行,每组测试数据有一行输出,也就是对应的x。输入数据保证x不大于20
样例输入
3
10000
100000000000110000
999999999999999999999999999999999999999999999999999999999999
1
样例输出
3
2
0

3.思路:

枚举+高精度乘法+高精度比较+数学题

4.代码:

 1 #include <string>
 2 #include 
 3 #include 
 4 #include 
 5 #include 
 6 
 7 using namespace std;
 8 
 9 string mul(string str1,string str2)
10 {
11     vector<int> v_res(str1.size()+str2.size(),0);
12     string::size_type i,j;
13     vector<int>::size_type k,p;
14 
15     reverse(str1.begin(),str1.end());
16     reverse(str2.begin(),str2.end());
17     for(i = 0; i != str1.size(); ++i)
18     {
19         for(j = 0; j != str2.size(); ++j)
20         {
21             v_res[i+j] += (str1[i]-'0') * (str2[j] - '0');
22         }
23     }
24     for(k = 0; k != v_res.size() - 1; ++k)
25     {
26         v_res[k+1] += v_res[k] / 10;
27         v_res[k] = v_res[k] % 10;
28     }
29 
30     for(p = v_res.size() - 1; p != -1; --p)
31     {
32         if(v_res[p] != 0) break;
33     }
34     if(p == -1) p = 0;
35 
36     string s_res(p+1,'0');
37     for(k = p; k != -1; --k) s_res[p-k] = char(v_res[k] + '0');
38     
39 
40     return s_res;
41 
42 }
43 
44 int cmp(string str1,string str2)
45 {
46     if(str1.size() != str2.size()) return str1.size() - str2.size();
47     int i;
48     for(i = 0; i < str1.size(); ++i)
49         if(str1[i] != str2[i]) break;
50     if(i < str1.size()) return (str1[i] - str2[i]);
51     else return 0;
52 }
53 
54 int main()
55 {
56     int n;
57     cin>>n;
58 
59     string a,b;
60     int i;
61     string x1,x2;
62     while(n--)
63     {
64         cin>>a>>b;
65         x1 = "1";
66         for(i = 0; i <= 20; ++i)
67         {
68             x1 = mul(x1,a);
69             if(cmp(x1,b) > 0) break;
70         }
71         cout<endl;
72     }
73     return 0;
74 }

 

转载于:https://www.cnblogs.com/mobileliker/p/3548862.html

更多相关:

  • 问题链接 LeetCode 7 题目解析 给定一个32位有符号整数,求其反转数字。 解题思路 如果是简单反转的话,那这道题就太简单了。题目要求判断溢出问题,32位int类型的范围是-2147483648~2147483647。数字反转过后是有可能超出范围的,此时应该返回0。 最简单的想法是,反转结果用long long表示,其范围远超...

  • 这两天在看小程序的地图,写写笔记记录一下 小程序官方文档提供的方法 https://mp.weixin.qq.com/debug/wxadoc/dev/api/location.html 腾讯地图提供的jssdk http://lbs.qq.com/qqmap_wx_jssdk/qqmapwx.html 根据提示使用腾讯地图jssdk...

  • importjava.security.SecureRandom;importjavax.crypto.Cipher;importjavax.crypto.SecretKey;importjavax.crypto.SecretKeyFactory;importjavax.crypto.spec.DESKeySpec;//结果与DES算...

  • 题目:替换空格 请实现一个函数,把字符串 s 中的每个空格替换成"%20"。 输入:s = "We are happy." 输出:"We%20are%20happy." 限制: 0 <= s 的长度 <= 10000 解题: 时间复杂度:O(n) 空间复杂度:O(n) class Solution { public:s...

  • 在C++11标准库中,string.h已经添加了to_string方法,方便从其他类型(如整形)快速转换成字面值。 例如: for (size_t i = 0; i < texArrSize; i++)RTX_Shader.SetInt(string("TexArr[") + to_string(i) + "]", 7 + i);...

  • Ubuntu 14.04安装并升级之后,变成楷体字体非常难看,我昨天搞了一晚上,终于理了个头绪,这里整理一下。 经过网上调研,大家的一致看法是,使用开源字体库文泉驿的微黑字体效果比较理想,甚至效果不输windows平台的雅黑字体。下面我打算微黑来美化Ubuntu 14.04. 1.安装文泉驿微黑字体库 sudo aptitude...

  • 使用string时发现了一些坑。 我们知道stl 容器并不是线程安全的,所以在使用它们的过程中往往需要一些同步机制来保证并发场景下的同步更新。 应该踩的坑还是一个不拉的踩了进去,所以还是记录一下吧。 string作为一个容器,随着我们的append 或者 针对string的+ 操作都会让string内部的数据域动态增加,而动态增加的...

  • 用python编写乘法口诀表的方法 发布时间:2020-08-25 11:46:35 来源:亿速云 阅读:60 作者:小新 用python编写乘法口诀表的方法?这个问题可能是我们日常学习或工作经常见到的。希望通过这个问题能让你收获颇深。下面是小编给大家带来的参考内容,让我们一起来看看吧! 第一种:使用for遍历循环嵌套for x in...

  • //很长一段时间我都只使用以下方式做数组循环,具体原因看数据 var aa = for (var i = 0, l = aa.length; i < l; i++) { var a = aa[i];} 数据采集图片来源于网友 很明显,for循环第二种方式完胜!!! 至于for in、forEach什么的,不知道甩他们多少...

  • 目录 1. Scene Graph Generation with External Knowledge and Image Reconstruction 2. Knowledge Acquisition for Visual Question Answering via Iterative Querying Author...

  • 基础题1: 输入一个正整数 n (1≤n≤10)和n 阶方阵a的元素,如果方阵a中的所有元素都沿主对角线对称,输出“Yes”, 否则,输出“No”。主对角线为从矩阵的左上角至右下角的连线,方阵a中的所有元素都沿主对角线对称指对所有i, k,a[i][k]和a[k][i]相等。输入输出示例如下: 输入: 3 1 2 3 4 5 6 7...

  • 程序流程控制 分支 顺序 循环 if switch&case 1 2 3 调整 break 1.6 前 switch(byte、short、char、int) 1.7 可放String 循环 while(次数不确定) do while for(确定次数) break(跳出本层循环) continue(跳出本次循环)     *   2...