思路:
打表你會發現1e9以內的數,有1022個幸運數,將他們存入陣列即可。
然後查詢每乙個數的next(l)的值(我們這裡是按幸運數來計算的,不需要遍歷所有的數)。
列印幸運數的思路:因為只有4和7,所以先記錄4,和7,並放入佇列中,從佇列中取乙個數,將它分別乘以4和7,小於1e9的記錄並放入佇列中,直到隊列為空為止,最後要加入4444444444,因為例如1e9的next值為4444444444(upper_bound()會查詢到),從小到大排序即可。(因為next的特性,所以只能用upper_bound())
下面是**:
#include
#include
#include
#include
using
namespace
std;
typedef
long
long ll;
const
int maxn=1e4+9;
ll cun[maxn];
int doo()//打表記錄每乙個幸運數
if(x*10+7
<1e9)
}return len;
}int main()
for(i++; cun[i]<=b; i++)//通過幸運值跳著查詢。
sum+=(cun[i]-cun[i-1])*cun[i];
if(cun[i]>b&&cun[i-1]!=b)//如果b不是乙個幸運值
sum+=(b-cun[i-1])*cun[i];
printf("%lld\n",sum);
}return
0;}
51Nod 幸運數字(打表)
1043 幸運號碼 基準時間限制 1 秒 空間限制 131072 kb 分值 20難度 3級演算法題 1個長度為2n的數,如果左邊n個數的和 右邊n個數的和,那麼就是乙個幸運號碼。例如 99 1230 123312是幸運號碼。給出乙個n,求長度為2n的幸運號碼的數量。由於數量很大,輸出數量 mod ...
python幸運數字判斷 幸運數字 小程式
問題描述 1 n個數字,每個數字的範圍 9999到9999,把這n個數字排序後,刪除奇數字的數,然後把剩餘的數按原位置排序後繼續刪除奇數字,直到剩餘乙個數為止,剩餘的數就是幸運數,輸出幸運數和它最初的位置。程式的輸入為兩個引數 數字的數量 n 具體的資料 以空格隔開 比如 6 66 666 6666...
幸運數字2
題目 定義乙個數字為幸運數字當且僅當它的所有數字都是4或者7。比如說,47 744 4都是幸運數字而5 17 467都不是。定義next x 為大於等於x的第乙個幸運數字。給定l,r,請求出next l next l 1 next r 1 next r include include include...