zoukankan      html  css  js  c++  java
  • 猫猫的小鱼

    猫猫的小鱼
    catfish
    内存限制: 64M
    猫猫是丛林里很多动物心中的天使,她为此十分自豪。猫猫最爱
    吃鱼了,她每天都要去池塘钓鱼吃。猫猫经常吃鱼脑,数学特别强,
    然而,小女生的性格决定了她的贪玩。
    一天,猫猫钓到了很多条鱼。她并不想马上就把可怜的鱼儿吃掉,
    而是先折磨够之后再吃(有句话叫什么来着~最毒不过猫猫心)。
    猫猫将这很多很多(数不过来)条鱼按照外观的漂亮程度排序,
    每个鱼的编号依次为 1、 2、 3……N,第 i 条鱼的美观程度为 3^(i-1)。
    猫猫要把这些鱼放到桶里去。她每次拿的鱼的数目是任意的。中
    的鱼的“总美观程度”为各条鱼美观程度之和。例如:猫猫这一次拿了
    第一条鱼和第三条鱼,那么美观程度为 1+9=10。
    猫猫想知道,她可以获得的第 k 大的“总美观程度”是多少。
    从文件中读入 k,输出猫猫能够获得的,第 k 大的“总美观程度”。
    输入数据:
    数据包含 n+1 行,第一行读入 n(n≤100)。以下 n 行每行包含一
    个 k。
    输出数据:
    输出包含 n 行,每行输出一个对应的结果。
    输入样例:
    17
    输出样例:
    13
    样例说明:
    猫猫能够拿到的美观程度从小到大为 1、 3、 4、 9、 10、 12、 13……
    所以第 7 大的美观程度是 13。
    对于 50%的输入文件,有 k≤5000。
    对于 100%的输入文件,有 k≤2^31-1。

    题解:
    将1、 3、 4、 9、 10、 12、 13转化成三进制
    1 10 11 100 101 110 111 把它们当成二进制再转成10进制就是
    1 2 3 4 5 6 7
    所以逆着做一遍就可以了。

     1 #include<iostream>
     2 #include<cstdio>
     3 #include<cstring>
     4 #include<algorithm>
     5 #include<vector>
     6 #include<map>
     7 #include<set>
     8 #include<cmath>
     9 #include<ctime>
    10 #define inf 2147483647
    11 #define p(a) putchar(a)
    12 #define g() getchar()
    13 #define For(i,a,b) for(register long long i=a;i<=b;i++)
    14 //by war
    15 //2017.10.24
    16 using namespace std;
    17 long long t;
    18 long long k;
    19 char a[10000010];
    20 long long cnt;
    21 long long P[10000010];
    22 long long ans;
    23 void in(long long &x)
    24 {
    25     long long y=1;
    26     char c=g();x=0;
    27     while(c<'0'||c>'9')
    28     {
    29         if(c=='-')
    30         y=-1;
    31         c=g();
    32     }
    33     while(c>='0'&&c<='9')x=x*10+c-'0',c=g();
    34     x*=y;
    35 }
    36 void o(long long x)
    37 {
    38     if(x<0)
    39     {
    40     p('-');
    41     x=-x;
    42     }
    43     if(x>9)o(x/10);
    44     p(x%10+'0');
    45 }
    46 int main()
    47 {
    48     freopen("catfish.in","r",stdin);
    49     freopen("catfish.out","w",stdout);
    50     in(t);
    51     P[0]=1;
    52     For(i,1,30)
    53     P[i]=P[i-1]*3;
    54     while(t--)
    55     {
    56         in(k);
    57         while(k>0)
    58         {
    59         ans+=(k%2)*P[cnt++];
    60         k>>=1;    
    61         }
    62         o(ans),p('
    ');
    63     }
    64     return 0;
    65 }
  • 相关阅读:
    xampp服务器搭建和使用
    使用proxyee-down解决百度云下载限速问题
    iOS开发之多线程技术—GCD篇
    iOS 将视频流(h264)和音频流封装成PS流
    iOS 播放音频文件
    iOS 简单socket连接
    ios获取本机网络IP地址方法
    iOS10适配相关
    iOS设备的尺寸和分辨率
    理解NodeJS
  • 原文地址:https://www.cnblogs.com/war1111/p/7722771.html
Copyright © 2011-2022 走看看