ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

CodeForce 82 A-Double Cola

2021-10-23 23:31:53  阅读:187  来源: 互联网

标签:10 20 nn int Double 40 CodeForce 82 Sn


#include<bits/stdc++.h>

using namespace std;

int main(){
	//1 2  3  4
	//5 10 20 40
	//等比数列  a^n = a^1 * q^(n - 1) 
	//这个题的q是2
	//比如说a^2 = a^1 * 2^1 
	//题目输入的数是和  求和公式是:a^1 * (1 - q^n) / (1 - q)
	//已知n求Sn,再求名字
	
	int nn;	//nn是真实 需要 求的名字的位置 
	cin >> nn;
	//5 10 20 40 80 160
	//1 2  4  8  16 32 
	int n;	//这是5 10 20 40的等比数列的n 
	int q = 2;
	int a1 = 5;

	//nn和Sn能挂上钩嘛?	能 
	//cout << log(1000000000) / log(2) << endl;
	if(nn <= 5){
		switch (nn) {
			case 1:
				cout << "Sheldon" << endl;
				break;
			case 2:
				cout << "Leonard" << endl;
				break;
			case 3:
				cout << "Penny" << endl;
				break;
			case 4:
				cout << "Rajesh" << endl;
				break;
			case 5:
				cout << "Howard" << endl;
				break;
		}
	}else {
		for(int i = 0; i <= 30; i++){
			//因为数据范围是十的九次方,2^29 < 10^9 
			int Sn = (5 * (1 - pow(q, i))) / (1 - q); 
			if(nn < Sn){
				//nn = 6, i = 2
				//nn = 10, i = 2
				//nn = 35, i = 3
				//小于的时候证明是在这一轮可以算出答案了
				//求一下这一轮中每个名字出现多少次
				int circle = pow(q, (i - 1));
				//然后算名字在哪个位置
				//nn = 6, circle = 2, index = (nn - Sn_1) / circle, index = (6 - 5) / 2 = 0√ 
				//nn = 10, circle = 2, index = (10 - 5) / 2 = 2√ 
				//nn = 35, circle = 4, index = (35 - 15) / 4 = 5√ 
				int Sn_1 = (5 * (1 - pow(q, i - 1))) / (1 - q);
				int index = (nn - Sn_1) / circle;
				switch (index) {
					case 0:
						cout << "Sheldon" << endl;
						break;
					case 1:
						cout << "Leonard" << endl;
						break;
					case 2:
						cout << "Penny" << endl;
						break;
					case 3:
						cout << "Rajesh" << endl;
						break;
					case 4:
						cout << "Howard" << endl;
						break;
				}
        		break;
			}
		} 
	}
    return 0;
}

标签:10,20,nn,int,Double,40,CodeForce,82,Sn
来源: https://www.cnblogs.com/Selma003/p/15449952.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有