超超的自闭意思
http://120.78.162.102/problem.php?cid=1432&pid=5
http://120.78.162.102/problem.php?id=6248
題解:我們可以估算出最大的n,當a=1,b=10000的時候,打表出來我們發現只會到達2*1e6,所以我們可以從1-2*1e6開始判斷,判斷到新的滿足要求的n就更新,但是我們每次單獨判斷一個數是不是素數很費時間,會超時,所以我們用素篩打一個表節約時間,然后判斷一個數是不是回文也是根據那個數的位數來的,所以不必擔心,然后就是直接暴力判斷
參考文章:https://blog.csdn.net/weixin_43272781/article/details/85058735
/* *@Author: STZG *@Language: C++ */ #include <bits/stdc++.h> #include<iostream> #include<algorithm> #include<cstdlib> #include<cstring> #include<cstdio> #include<string> #include<vector> #include<bitset> #include<queue> #include<deque> #include<stack> #include<cmath> #include<list> #include<map> #include<set> //#define DEBUG #define RI register int using namespace std; typedef long long ll; typedef __int128 lll; const int N=2e6+1000; const int MOD=1e9+7; const double PI = acos(-1.0); const double EXP = 1E-8; const int INF = 0x3f3f3f3f; int t,n,m,k,q; int prime[N]; bool pp[N]; int vis[N]; int a[N]; int b[N]; bool pd_h(int x) {int y=x,num=0;//int y=x,防止x被改變while (y!=0){num=num*10+y%10;//上一次數字的記錄進位再加上下一位數y/=10;}if (num==x) return 1;else return 0; }int main() { #ifdef DEBUGfreopen("input.in", "r", stdin);//freopen("output.out", "w", stdout); #endif//scanf("%d",&n);a[1]=0;b[1]=1;int cnt=0;for(int i=2;i<N;i++){if(!vis[i]) prime[cnt++]=i,pp[i]=1;for(int j=0;j<cnt&&i*prime[j]<N;j++){vis[i*prime[j]]=i;if(i%prime[j]==0) break;}a[i]=a[i-1]+pp[i];b[i]=b[i-1]+pd_h(i);}scanf("%d",&t);while(t--){int aa,bb;scanf("%d%d",&aa,&bb);int maxl=0;for(int i=1;i<N;i++){if(a[i]*bb<=b[i]*aa)maxl=i;}cout << maxl << endl;}//cout << "Hello world!" << endl;return 0; }?
與50位技術專家面對面20年技術見證,附贈技術全景圖總結