
#include<stdio.h>
int main()
{
int a[10000];int n,m,i,j=0;for(i=1;i<200000000;i++){n=i;while(n%2==0)n/=2;while(n%3==0)n/=3;if(n==1)a[++j]=i;}while(scanf("%d%d",&n,&m)!=EOF){int p;for(i=1;a[i]<=n;i++)if(i==m)p=a[i];printf("%d\n",i-1);printf("%d\n",p);}return 0;}
因为你执行for(i=1;a[i]<=n;i++),会执行i++,即使是最后一次不满足条件a[i]<=n,也会执行i++,所以i比求的值大1,因此要减1