zoukankan      html  css  js  c++  java
  • 袁绍的刁难

    Description
      黄巾之乱后,郭嘉到了袁绍的统辖地区,结果袁绍想给我们的郭嘉大大一个下马威,且正值他招募将领的时候,于是乎,袁绍就让郭嘉大大去替他招募将领。
      这时候有很多很多的将领到袁绍处报到(别人家底厚,四世三公哪~~),每个将领的编号依次为1、2、3……N,第i个将领的武力值为3^(i-1)。
      袁绍需要我们的郭嘉大大招纳任意个将领,而郭嘉选中的将领有一个“总武力值”为各个将领的武力值之和。例如:郭嘉这一次招募了第一个将领和第三个将领,那么“总武力值”为1+9=10。
      袁绍想知道,他可以获得的第k大的“总武力值”是多少,请你帮助我们的郭嘉大大告诉袁绍这个第k大的“总武力值”。
      从文件中读入k,输出郭嘉能够获得的,第k大的“总武力值”。

    Input
     数据包含n+1行,第一行读入n(n≤100)。以下n行每行包含一个k。

    Output
     输出包含n行,每行输出一个对应的结果。

    Sample Input
    1
    7

    Sample Output
    13

    Data Constraint

    Hint
    样例说明:
    郭嘉能够拿到的总武力值从小到大为1、3、4、9、10、12、13……所以第7大的总武力值是13。
    对于50%的输入文件,有k≤5000。
    对于100%的输入文件,有k≤2^31-1。

    .
    .
    .
    .
    .
    分析
    把k转换成二进制,第i位代表3^(i-1),如果第i位为1就选。

    .
    .
    .
    .
    .
    程序:

    #include<iostream>
    #include<cstdio>
    #include<cstring>
    using namespace std;
    
    string zfc="";
    
    long long ksm(long long a,long long b)
    {
    	long long ans=1,x=a;
    	while (b!=0)
    	{
    		if (b&1) ans*=x;
    		x*=x;
    		b>>=1;
    	}
    	return ans;
    }
    
    
    int main()
    {
    	freopen("recruitment.in","r",stdin);
    	freopen("recruitment.out","w",stdout);
    	int n;
    	scanf("%d",&n);
    	while (n--)
    	{
    		long long k;
    		scanf("%lld",&k);
    		zfc="";
    		while (k)
    		{
    			char zf=(char)(k%2)+'0';
    			zfc=zfc+zf;
    			k/=2;
    		}
    		int l=zfc.length();
    		long long a[1000];
    		memset(a,0,sizeof(a));
    		for (int i=1;i<=l;i++)
    			a[i]=ksm(3,i-1);
    		l--;
    		long long ans=0;
    		for (int i=0;i<=l;i++)
    			if (zfc[i]=='1')
    			{
    				ans=(long long)ans+a[i+1];
    			}
    		printf("%lld
    ",ans);
    	}
    	fclose(stdin);
    	fclose(stdout);
    	return 0;
    }
    
  • 相关阅读:
    【BZOJ 2124】【CodeVS 1283】等差子序列
    【BZOJ 1036】【ZJOI 2008】树的统计Count
    【BZOJ 1901】【ZJU 2112】Dynamic Rankings
    【BZOJ 3924】【ZJOI 2015】幻想乡战略游戏
    【BZOJ 4103】【THUSC 2015】异或运算
    【BZOJ 4513】【SDOI 2016】储能表
    【HDU 3622】Bomb Game
    【BZOJ 3166】【HEOI 2013】Alo
    【BZOJ 3530】【SDOI 2014】数数
    【BZOJ 4567】【SCOI 2016】背单词
  • 原文地址:https://www.cnblogs.com/YYC-0304/p/10458940.html
Copyright © 2011-2022 走看看