类似的实现为什么结果不同?
  • 板块P1112 波浪数
  • 楼主fishtail
  • 当前回复1
  • 已保存回复1
  • 发布时间2021/5/17 22:47
  • 上次更新2023/11/4 23:07:44
查看原帖
类似的实现为什么结果不同?
278017
fishtail楼主2021/5/17 22:47

为什么循环中类似的实现,结果不同?见代码中注释

#include<bits/stdc++.h>
using namespace std;

int d[10000005];

int main(){
    int a,b,l,r,k;
    cin>>a>>b>>l>>r>>k;
    for(int p=a; p<=b; p++) {
    	//枚举p进制下所有的波浪数
		//i和j作为波浪数的2个值 
        for(int i=0; i<p; i++) {
            for(int j=1; j<p; j++){
                if(i != j) {
                    int s=i*p+j;//构造开始
                    //这样实现就ok
                    int t=0;
                    while(s<=r) {
                        if(s>=l) d[s]++;//符合要求,重数++
                        if(t%2==0) s=s*p+i;//在末尾加第一个数
                        else s=s*p+j;//加第二个数
                        t++;
                    }             
                    //用这样的方式,就有3个数据会超时?       
                    // while(s<=r) {
                    //     if(s>=l and s<=r) d[s]++;//符合要求,重数++
                    //     s=s*p+i;//在末尾加第一个数
                    //     if(s>=l and s<=r) d[s]++;
                    //     s=s*p+j;//加第二个数
                    // }
                }
            }
        }
    }
    for(int i=l;i<=r;i++) //得出答案
    	if(d[i]==k) cout<<i<<endl;
    return 0;
}
2021/5/17 22:47
加载中...