zoukankan      html  css  js  c++  java
  • 题解 CF813B 【The Golden Age】

    这题的具体思路楼上的 dalao 已经说清楚了,但没有代码,我这个小蒟蒻就补一发代码吧。

    这道题目中的“不幸年”的个数不好确定,那么怎么办?

    当然是用 C++ 的精髓 STL!

    下面我来简单介绍一下 vector。

    vector 的好处:

    STL中有一个很好的容器 vector,它的大小根据元素的数量而改变,极其省空间。另外 vector 也有一个函数 push_back,可以直接把元素插入到一个 vector 的末尾。

    那么,本题用 vector 就是再好不过啦!

    vector 的定义:

    vector 的定义如下:

    vector<typename> name;
    

    这相当于定义了一个一维数组 name[size],其中 size 的大小不确定,根据需要而变化。typename 可以为任意一基本类型,如 int、double、结构体等,也可以是 STL 的容器,包括 vector。

    如果想定义一个二维的 vector,就可以这样:

    vector<typename> name[size]
    

    其中第一维确定,第二维不确定。

    vector 的访问:

    vector 的访问主要有两种形式,一种是下标访问,另一种是定一迭代器,如下:

    vector<typename>::iterator it
    

    我个人习惯用下标访问(主要是因为懒)。

    vector 的常用函数:

    (1) push_back() 和 pop_back

    push_back()是用来在 vector 的末尾插入元素,pop_back() 则是删除。

    (2)size()

    size() 是用来获取 vector 里元素的个数。

    (3)clear()

    clear() 用来清除 vector 里的元素。

    (4)begin() 和 end()

    分别获取 vector 的首地址和尾地址。

    还有 insert() 和 erase() 这两个请自行百度。

    接下来,就是可爱的代码了:

    #include<bits/stdc++.h>
    using namespace std;
    long long x,y,l,r;
    vector<long long> v;    //定义 vector 
    int main()
    {
    	cin>>x>>y>>l>>r;
    	if(x==1)        //这里需要特判,如果 x=1 或 y=1,那么无论几次幂都是一。  
    	    x=0x3f3f3f3f3f3f3f3f;
    	if(y==1)
    	    y=0x3f3f3f3f3f3f3f3f;
    	for(long long i=1;;i*=x)
    	{
    		for(long long j=1;;j*=y)
    		{
    			if(i+j>=l&&i+j<=r)     //求出满足在 [l,r] 区间内的不幸年,把它放进 vector。 
    				v.push_back(i+j);    
    			if(r/j<y)    //如果超过了,跳出循环。 
    			    break;
    		}
    		if(r/i<x)  //同上。 
    		    break;
    	}
    	sort(v.begin(),v.end());   //将整个 vector 排个序。 
    	if(v.size()==0)            //特判,如果没有一个不幸年,那么长度就是整个区间。 
    	{
    	    cout<<r-l+1;
    		return 0;
    	}
    	long long ans=max(v[0]-l,r-v[v.size()-1]);   //不要忘了开头和末尾哟。 
    	for(int i=0;i<v.size()-1;i++)    //逐一计算两个不幸年之间的年数,更新答案。 
    	    ans=max(ans,v[i+1]-v[i]-1);
    	cout<<ans;   //输出。 
    	return 0;
    }
    

    逃(

  • 相关阅读:
    Docker入门
    KMP算法
    spring boot整合Thymeleaf
    thymeleaf公共页面元素抽取
    入门oj 6492: 小B的询问
    入门oj 6451: The XOR Largest Pair之二
    入门oj 5499: 讲话模式
    把Windows CA根证书安装到iPhone
    笔记本电脑键盘状态助手KeyboardState
    开启Windows7多用户远程桌面
  • 原文地址:https://www.cnblogs.com/win10crz/p/12859685.html
Copyright © 2011-2022 走看看