题目 题意: 求给定区间 [X,Y] 中满足下列条件的整数个数:这个数恰好等于 K 个互不相等的 B 的整数次幂之和。 思路: 看似很复杂,我们仔细想想,类比二进制,把数字换成B进制就好了。如果转换以后恰好有k个1,那行,不然寄。比如11转3进制,有两个3^0,要求互不相等,那就寄了。恰好k个1就行。其余地方套用数位dp的模板即可。 时间复杂度: O(能过) 代码:
// Problem: 度的数量
// Contest: AcWing
// URL: https://www.acwing.com/problem/content/1083/
// Memory Limit: 64 MB
// Time Limit: 1000 ms
//
// Powered by CP Editor (https://cpeditor.org)
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#define OldTomato ios::sync_with_stdio(false),cin.tie(nullptr),cout.tie(nullptr)
#define fir(i,a,b) for(int i=a;i>r>>k>>b;
coutT;
// read(T);
while(T--)
{
solve();
}
return 0;
}