NC231110. 小y的质因数
描述
输入描述
第一行一个正整数代表数据组数
接下来每行个数
输出描述
行每行一个数代表答案
示例1
输入:
3 1 8 0 1 8 1 1 8 2
输出:
4 6 8
C++ 解法, 执行用时: 422ms, 内存消耗: 408K, 提交时间: 2022-03-03 21:52:39
#include <bits/stdc++.h> using namespace std; typedef long long ll; int i,j,k,n,m,t,sb,it; bool b[2500]; ll l,r,p[333]; ll dfs(ll x,int y,int dep){ if(!x)return 0; if(!y)return 1; if(x<(1ll<<y))return 0; ll res=0,tmp,k; for(int i=dep;i<=it;i++){ k=1;tmp=0; for(int j=1;j<=y;j++){ k*=p[i]; tmp+=dfs(x/k,y-j,i+1); } if(!tmp)break; res+=tmp; } return res; } ll get(ll x,int m){ ll tmp,res=!!x; for(int i=1;i<=40;i++){ tmp=dfs(min(x,1ll<<(i+m)),i,1); if(!tmp)break; res+=tmp; } return res; } int main() { ios::sync_with_stdio(0); for(i=2;i<=2048;i++){ if(!b[i]){ p[++it]=i;for(j=i+i;j<=2048;j+=i)b[j]=1; } } cin>>t; while(t--){ cin>>l>>r>>sb; cout<<get(r,sb)-get(l-1,sb)<<'\n'; } }