📄 toj a.txt
字号:
#include <iostream>
#include <stdio.h>
#include <algorithm>
#include <math.h>
#include <stdlib.h>
//#include <time.h>
using namespace std;
#define NMAX 28
char song[NMAX][105];
long long jinzhi[NMAX];
long long solve(long long num,long long k)
{
long long tan;
long long tiao;//第tan字典序
long long i,geshu,yushu;//某tan字典序里的第geshu个序列,序列里的第yushu个数
long long flag=0;
tan=1;
k--;
tiao=0;
for(tan=1;tan<=num;tan++)
{
tiao+=tan*(long long)(pow(num,tan));
if(tiao>100000000) {flag=1;break;}
}
if(flag==0) k=k%tiao;
tan=1;
while(k-tan*pow(num,tan)>=0)
{
// prlong longf("每堂急案%d\n",tan*(long long)(pow(num,tan)));
k-=tan*(long long)(pow(num,tan));
tan++;
if(tan==num+1) tan=1;
}
// prlong longf("tan=%d\n",tan);
geshu=k/tan;
yushu=k%tan;
// prlong longf("k=%d geshu=%d yushu=%d\n",k,geshu,yushu);
for(i=1;i<=tan;i++)
{
jinzhi[i]=geshu%num;
geshu/=num;
}
// for(i=1;i<=tan;i++)
// prlong longf("%d",jinzhi[i]);
// prlong longf("\n");
return jinzhi[tan-yushu]+1;
}
int main()
{
long long num,i,k,qnum;
cin>>num>>qnum;
while(!(num==0 && qnum==0))
{
for(i=1;i<=num;i++)
cin>>song[i];
for(i=1;i<=qnum;i++)
{
cin>>k;
printf("%s\n",song[solve(num,k)]);
}
printf("\n");
cin>>num>>qnum;
}
return 0;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -