上交OJ-1012. 增长率问题

1012. 增长率问题


Description

有一个数列,它是由自然数组成的,并且严格单调上升。最小的数不小于S,最大的不超过T。现在知道这个数列有一个性质:后一个数相对于前一个数的增长率总是百分比下的整数(如5相对于4的增长率是25%,25为整数;而9对7就不行了)。现在问:这个数列最长可以有多长?满足最长要求的数列有多少个?

Input Format

输入仅有一行,包含S和T两个数( 0<S<T≤200000 )。

30%的数据,0<S<T≤100 ;

100%的数据,0<S<T≤200000。

Output Format

输出有2行。第一行包含一个数表示长度,第二行包含一个数表示个数。

Sample Input

2 10

Sample Output

5
2

样例解释

2 4 5 6 9以及2 4 5 8 10

分析

这道题使用动态规划分析,其关键在于:
(tmp-i)/i=j/100
展开则有:tmp=i+ij/100,即ij能被100整除。

#include <iostream>

using namespace std;

int main()
{
    long long int max_length[200000], max_num[200000];
    int s,t;
    int i,j;
    int tmp;
    long long int maxl=1,maxn; //注意溢出,和最少一个
    cin>>s>>t;
    maxn=t-s+1; //当为一个的时候,其可以有这么多个,考虑质数情况
    for(i=s; i<=t; i++)
        max_length[i]=max_num[i]=1;
    for(i=s; i<=t; i++) {
        for(j=1; j<=100; j++){
            if((i*j)%100 == 0) {
                tmp=i+(i*j)/100;
                if(tmp<=t) {
                    if(max_length[i]+1 > max_length[tmp]) {
                        max_length[tmp] = max_length[i]+1;
                        max_num[tmp]=max_num[i];
                    }
                    else if(max_length[i]+1==max_length[tmp])
                        max_num[tmp]+=max_num[i];
                    if(max_length[tmp]>maxl) {
                        maxl=max_length[tmp];
                        maxn=max_num[tmp];
                    }
                    else if(max_length[tmp]==maxl) 
                        maxn+=max_num[i];
                }
            }
        }
    }
    cout<<maxl<<endl<<maxn<<endl;
    return 0;
}
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • "use strict";function _classCallCheck(e,t){if(!(e instanc...
    久些阅读 6,172评论 0 2
  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 135,819评论 19 139
  • 【程序1】 题目:古典问题:有一对兔子,从出生后第3个月起每个月都生一对兔子,小兔子长到第三个月后每个月又生一...
    阿里高级软件架构师阅读 8,549评论 0 19
  • 和着一瓣老蒜头,回锅肉及襄县焖面 携着满身尘土,半日沧桑和一地鸡毛 衣冠楚楚,白衬衫稍显紧身 落落风尘,西装裤掺杂...
    鞭尸时代阅读 3,405评论 0 0
  • 谁能告诉我 期盼有多远 当翻过这座山 山那边是否有 一束暖暖的阳光 谁能告诉我 你我有多远 等待有没有终点 思念会...
    __洪燕阅读 1,184评论 4 3

友情链接更多精彩内容