我是榜上最後一名= =
可能高精度用vector太慢了吧……什麼破題= =
這道題很簡單,如果高精度熟練**……也很簡單……然而,引數調了好久
我們發現質數的指數一定是,質數越小,指數越大,這個很顯然我不說了
所以我們就用個優先佇列bfs就好,佇列按數從小到大排序,每次把佇列的數取出來作為下乙個我們需要的數(也就是大小遞增且約數個數嚴格遞增),刪掉佇列首比這個數約數個數小的數
然後用這個數再擴充套件一層質數,注意剪枝吧。。
預處理好後回答詢問二分就行
質數大小開到85,搜出來的數的總量3810,在tle的邊緣試探……
vector寫高精度是真的很慢……
#include #include #include #include #include #include #include #include //#define ivorysi
#define eps 1e-8
#define mo 974711
#define pb push_back
#define mp make_pair
#define pii pair#define fi first
#define se second
#define maxn 100005
using namespace std;
typedef long long int64;
typedef unsigned int u32;
typedef double db;
const int64 mod = 1000000007;
const int base = 100000000,len = 8;
struct bignum
bignum operator = (int64 x) while(x);
return *this;
}bignum operator = (const string &str)
return *this;
}friend bignum operator * (const bignum &a,const bignum &b)
int t = i + b.v.size();
while(g)
} for(int i = c.v.size() - 1 ; i > 0 ; --i)
return c;
}friend bignum operator / (const bignum &a,const int x)
for(int i = c.v.size() - 1 ; i > 0 ; --i)
return c;
}friend bool operator < (const bignum &a,const bignum &b)
return false;
} }
friend bool operator == (const bignum &a,const bignum &b)
return true;
} }
friend bool operator > (const bignum &a,const bignum &b)
friend bool operator != (const bignum &a,const bignum &b)
friend bool operator <= (const bignum &a,const bignum &b)
friend bool operator >= (const bignum &a,const bignum &b)
void print()
}}n;int t;
bool nonprime[100005];
int prime[100005],cnt;
const int p = 85;
struct node
friend node operator * (const node &a,int x)
friend bool operator < (const node &a,const node &b)
friend bool operator == (const node &a,const node &b)
}ans[4005];
int tot = 0;
sets;
void solve()
s.insert(p * 1);
node k = *s.begin();
s.erase(s.begin());
for(int i = 2 ; i <= cnt ; ++i)
p = k;
}}int main()
} }
ios::sync_with_stdio(false);
solve();
cin>>t;
string str;
while(t--)
ans[l].num.print();
putchar(' ');
ans[l].val.print();
putchar('\n');
}return 0;
}
51nod 1061 最複雜的數V2
51nod 1061 求 1,n 中約數個數最多的數。n le 10 首先,答案一定是乙個反素數。什麼是反素數?乙個正整數 x 是反素數的充要條件是 1,x 1 中的整數的約數個數都小於 x 的約數個數。反素數有什麼性質?把乙個反素數分解成 p 1 p 2 p n 的形式,則 a 1 ge a 2 ...
51Nod 1060 最複雜的數
把乙個數的約數個數定義為該數的複雜程度,給出乙個n,求1 n中複雜程度最高的那個數。例如 12的約數為 1 2 3 4 6 12,共6個數,所以12的複雜程度是6。如果有多個數複雜度相等,輸出最小的。input 第1行 乙個數t,表示後面用作輸入測試的數的數量。1 t 100 第2 t 1行 t個數...
51nod 1060 最複雜的數
1060 最複雜的數 ural 1748 基準時間限制 1 秒 空間限制 131072 kb 分值 40 難度 4級演算法題 把乙個數的約數個數定義為該數的複雜程度,給出乙個n,求1 n中複雜程度最高的那個數。例如 12的約數為 1 2 3 4 6 12,共6個數,所以12的複雜程度是6。如果有多個...