两道P语言编程题

发布网友 发布时间:2022-04-23 13:05

我来回答

2个回答

热心网友 时间:2023-09-30 15:54

#include<iostream> #include<cstdio> #include<vector>#include<algorithm>using namespace std; vector<int> g;const int maxn=10000005;int p1,p2,low,high,tar;void make(int jz){ int i,j,n,a[40]={0},tmp,x,y; tmp=low;j=1; while(tmp) { a[j++]=tmp%jz; tmp=tmp/jz; } n=j-1; if(n>1) { i=a[n-1]; j=a[n]; } else { i=0; j=a[n]; } for(x=n;;) { if(i==j) { i++; if(i==jz) { j++; i=0; } if(j==jz) { j=1; x++; } continue; } if(x%2) { for(y=x;y>=3;y-=2){a[y]=j;a[y-1]=i;} a[1]=j; } else { for(y=x;y>=2;y-=2){a[y]=j;a[y-1]=i;} } tmp=0; for(y=x;y>=1;y--)tmp=tmp*jz+a[y]; if(x==1)j++; else i++; if(i==jz) { j++; i=0; } if(j==jz) { j=1; x++; } if(tmp<low)continue; else if(tmp>high)break; else g.push_back(tmp); }}int test,c;int main(){ //freopen("r.txt","r",stdin); //freopen("w.txt","w",stdout); while(scanf("%d",&p1)==1) { g.clear(); scanf("%d%d%d%d",&p2,&low,&high,&tar); for(test=p1;test<=p2;test++)make(test); sort(g.begin(),g.end()); c=1; for(test=1;test!=g.size();test++) { if(g[test]!=g[test-1]) { if(c==tar)printf("%d\n",g[test-1]); c=1; } else c++; } if(c==tar)printf("%d\n",g[test-1]); } return 0;}

热心网友 时间:2023-09-30 15:55

我偏不告诉你!!!

声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com