(Incomplete)UVa 701 The Archeologist's Dilemma

Posted 大四开始ACM

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了(Incomplete)UVa 701 The Archeologist's Dilemma相关的知识,希望对你有一定的参考价值。

方法:对数,暴力

我们需要求出最小的e,是的存在一个i > len(n) , 满足   floor[2^e/ (10^i)]= n, 即 n*10^i < 2^e < (n+1)*10^i。对两边同时取log10 (以10为底的对数,记作lg),得到

lg(n) + i < e*lg(2) < lg(n+1) + i。 注意len(n) = (int) lg(n)+1, 之前一个条件 i > len(n) 可以转化为 i > lg(n)+1,  然后暴力枚举即可。 注意2的power有无限个,无解的情况不存在(待考证)。

code:

#include <cstdio>
#include <cstring>
#include <algorithm>
#include <iostream>
#include <string>
#include <vector>
#include <stack>
#include <bitset>
#include <cstdlib>
#include <cmath>
#include <set>
#include <list>
#include <deque>
#include <map>
#include <queue>
#include <fstream>
#include <cassert>
#include <unordered_map>
#include <cmath>
#include <sstream>
#include <time.h>
#include <complex>
#define Max(a,b) ((a)>(b)?(a):(b))
#define Min(a,b) ((a)<(b)?(a):(b))
#define FOR(a,b,c) for (int (a)=(b);(a)<(c);++(a))
#define FORN(a,b,c) for (int (a)=(b);(a)<=(c);++(a))
#define DFOR(a,b,c) for (int (a)=(b);(a)>=(c);--(a))
#define FORSQ(a,b,c) for (int (a)=(b);(a)*(a)<=(c);++(a))
#define FORC(a,b,c) for (char (a)=(b);(a)<=(c);++(a))
#define FOREACH(a,b) for (auto &(a) : (b))
#define rep(i,n) FOR(i,0,n)
#define repn(i,n) FORN(i,1,n)
#define drep(i,n) DFOR(i,n-1,0)
#define drepn(i,n) DFOR(i,n,1)
#define MAX(a,b) a = Max(a,b)
#define MIN(a,b) a = Min(a,b)
#define SQR(x) ((LL)(x) * (x))
#define Reset(a,b) memset(a,b,sizeof(a))
#define fi first
#define se second
#define mp make_pair
#define pb push_back
#define all(v) v.begin(),v.end()
#define ALLA(arr,sz) arr,arr+sz
#define SIZE(v) (int)v.size()
#define SORT(v) sort(all(v))
#define REVERSE(v) reverse(ALL(v))
#define SORTA(arr,sz) sort(ALLA(arr,sz))
#define REVERSEA(arr,sz) reverse(ALLA(arr,sz))
#define PERMUTE next_permutation
#define TC(t) while(t--)
#define forever for(;;)
#define PINF 1000000000000
#define newline ‘\n‘

#define test if(1)if(0)cerr
using namespace std;
  using namespace std;
typedef vector<int> vi;
typedef vector<vi> vvi;
typedef pair<int,int> ii;
typedef pair<double,double> dd;
typedef pair<char,char> cc;
typedef vector<ii> vii;
typedef long long ll;
typedef unsigned long long ull;
typedef pair<ll, ll> l4;
const double pi = acos(-1.0);

int n;
int solve()
{
    int i = log10(n)+2;
    for (;;++i)
    {
        int a = (log10(n) + i)/log10(2), b = ceil((log10(n+1)+i)/log10(2));
        
        if (a+1 < b)
            return a+1;
    }
    return -1;
}

int main()
{
    while (cin >> n)
    {
        cout << solve() << newline;
    }
}
/*
 
 0 0 0 0
 0 0 0 100
 5 20 34 325 4 5 6 7
 283 102 23 320 203 301 203 40 -1 -1 -1 -1
*/

  

以上是关于(Incomplete)UVa 701 The Archeologist's Dilemma的主要内容,如果未能解决你的问题,请参考以下文章

(Incomplete) UVa 138 Street Numbers

错误提示:The project was not built since its build path is incomplete. Cannot find the class file for ja

CDH大数据平台 安装superset常见错误汇总Could not import the lzma module. Your installed Python is incomplete

UVA Mapping the Swaps

uva 1597 Searching the Web

Flutter 常见问题三十七Cannot Save Settings:The Flutter SDK installation is incomplete