栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > C/C++/C#

【题解】MooBuzz

C/C++/C# 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

【题解】MooBuzz

题目描述

Farmer John 的奶牛们最近成为了一个简单的数字游戏“FizzBuzz”的狂热玩家。这个游戏的规则很简单:奶牛们站成一圈,依次从一开始报数,每头奶牛在轮到她的时候报一个数。如果一头奶牛将要报的数字是 3 的倍数,她应当报“Fizz”来代替这个数。如果一头奶牛将要报的数字是 5 的倍数,她应当报“Buzz”来代替这个数。如果一头奶牛将要报的数字是 15 的倍数,她应当报“FizzBuzz”来代替这个数。于是这个游戏的开始部分的记录为:

1, 2, Fizz, 4, Buzz, Fizz, 7, 8, Fizz, Buzz, 11, Fizz, 13, 14, FizzBuzz, 16 由于词汇的匮乏,奶牛们玩的 FizzBuzz 中用“Moo”代替了 Fizz、Buzz、FizzBuzz。于是奶牛版的游戏的开始部分的记录为: 1, 2, Moo, 4, Moo, Moo, 7, 8, Moo, Moo, 11, Moo, 13, 14, Moo, 16

给定 N(1≤N≤10^9),请求出这个游戏中第 N个被报的数。

输入

输入包含一个整数 N

输出

输出游戏中被报出的第 N个数。

样例输入

4

样例输出

7

一个二分答案,二分+验证,再拉上一个结构体和快排,这道题就解完了。

判定

​
bool judge(long long x){
	long long Start=0,s=0,num=0;
	for(long long i=1;i<=m;i++){
		Start=max(Start,a[i].x);
		if(a[i].y>=Start){
			num=1+(a[i].y-Start)/x;
			s+=num;
			qi=qi+num*x;
		}
	}
	return (s>=n);
}

​

要开long long!!!!!!!!!!!!!!!!!!

完整代码

#include
using namespace std;
long long n,m,t,w,bao;
struct no{
	long long x,y;
}a[100005];
bool judge(long long x){                          //验证
	long long Start=0,s=0,num=0;
	for(long long i=1;i<=m;i++){
		Start=max(Start,a[i].x);
		if(a[i].y>=Start){
			num=1+(a[i].y-Start)/x;
			s+=num;
			qi=qi+num*x;
		}
	}
	return s>=n;
}
bool cmp(no x,no y){
	return x.x>n>>m;
	for(long long i=1;i<=m;i++) cin>>a[i].x>>a[i].y;
	sort(a+1,a+1+m,cmp);                           //排序
	t=1;w=2e9;
	while(t<=w){                                   //二分
		long long mid=(t+w)/2;
		if(judge(mid)) bao=mid,t=mid+1;
		else w=mid-1;
	}
	cout< 
  

算法:二分答案#

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/298359.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号