博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
POJ-2739(Water)
阅读量:6495 次
发布时间:2019-06-24

本文共 919 字,大约阅读时间需要 3 分钟。

2739:计算对数

时间限制:

1000ms

内存限制:

65536kB

描述

给定两个正整数a和b。可以知道一定存在整数x,使得

x <= logab < x + 1
输出x

输入

第1行是测试数据的组数n,每组测试数据占2行,分别是a和b。每组测试数据之间有一个空行每行数据不超过100个字符

输出

n行,每组测试数据有一行输出,也就是对应的x。输入数据保证x不大于20

样例输入

3

10000

1000000000001

 

10000

999999999999

 

999999999999999999999999999999999999999999999999

1

样例输出

3

2

0

 

#include"iostream"

#include"cmath"
#include"cstring"
#include"stdlib.h"
using namespace std;
int main()
{
 int t;
 cin>>t;
  while(t--)
  {
   char a[100];
   char b[100];
   cin>>a>>b;
   int La=strlen(a);
   int Lb=strlen(b);
   a[6]='\0';//仅保留6位数
   b[6]='\0';
   for(int i=0;i<6;i++)//前6位是'\0'的一律转化为'0',为后面除以1e5以得到整数部分仅剩一位的小数,即自然对数表示法的近似值
   {
    if(a[i]=='\0')
     a[i]='0';
    if(b[i]=='\0')
     b[i]='0';
    }
   cout<<int((log10(atof(b)/1e5)+Lb-1)/(log10(atof(a)/1e5)+La-1))<<endl;//注意,一定要强制转化为int型;atof是int型转换为float型;
   //后面加上La-1是整数部分,前面部分是小数部分(a字符串代表的数字可近似表示为atof(a/1e5)*1e(La-1),取对数后就是上面的形式了)
  }
}

转载于:https://www.cnblogs.com/lzhitian/archive/2011/08/16/2140073.html

你可能感兴趣的文章
怎样写出一个较好的高速排序程序
查看>>
【动态规划】最长公共子序列与最长公共子串
查看>>
要立刷金组flag了T_T
查看>>
Swift常量和变量
查看>>
GNU Make chapter 2 —— Makefile 介绍
查看>>
[转]在Eclipse中使用JUnit4进行单元测试(中级篇)
查看>>
gdb图形化调试工具总结
查看>>
白话经典算法系列之七 堆与堆排序
查看>>
微软职位内部推荐-SDEII
查看>>
Windows下FFmpeg高速入门
查看>>
【分享】 IT囧事
查看>>
Android安卓开发中图片缩放讲解
查看>>
【Java】Lucene检索引擎详解
查看>>
Cts框架解析(7)-任务运行的调度室
查看>>
SDN:软件定义网络
查看>>
1.1GTK+ 的简单程序HelloWorld
查看>>
一款基jquery超炫的动画导航菜单
查看>>
stm32时钟树讲解
查看>>
CSDN - 进程结束后new出的内存会回收吗?
查看>>
搭建Mantis 缺陷管理系统(转)
查看>>