QAQ的幸运数字 数学
QAQ的幸運數字
Time Limit:?1000MS?Memory Limit:?65536KB Submit?StatisticProblem Description
金牌巨 QAQ 經常靠漲人品 (Rising RP) 來?A 題。他的幸運數字是 4 和 7,因此他也經常在第 4 發或第 7 發提交時過題(誤)。
一天,突 (xian) 發 (de) 奇 (wu) 想 (liao) 的 QAQ 定義了一種新的數叫「厲害了我的金桔數」,指只含有且必須同時含有 4 和 7 的數。栗如:47, 747?是「厲害了我的金桔數」,而 2333, 666, 457, 777 就不是「厲害了我的金桔數」。
現在,他想知道在位數不超過 n 的正整數內,有多少個數是「厲害了我的金桔數」。
PS:由于「厲害了我的金桔數」實在是太多啦,QAQ 決定,所有的結果都需要?膜?(模) QAQ 自己,即計算結果需要對?816581 取模(取余)。
Input
輸入數據有多組(數據組數不超過 10000),到 EOF 結束。
每組輸入為一行,包含一個正整數 n (1 <= n <= 10000)。
Output
對于每組輸入,輸出一行,包含一個整數,表示在位數不超過 n 的正整數內「厲害了我的金桔數」的個數,結果需要對?816581 取模。
Example Input
1 2 3Example Output
0 2 8Hint
如果你的結果不是一步得出的,那么你可能需要在每一步運算時都進行一次取模操作。
n = 3 時,不超過 3 位的「厲害了我的金桔數」共有 8 個,分別為:47, 74, 447, 474, 477, 744, 747, 774。
Author
(a+b)%maxn=(a%maxn+b%maxn)%maxn;
(a-b)%maxn=(a%maxn-b%maxn+maxn)%maxn;
(a*b)%maxn=(a%maxn*b%maxn)%maxn;
#include<iostream>
#include<cstdio>
using namespace std;
const int maxn=816581;
int a[10100];
int pow(int a,int n)
{
? int p=1;
? while(n--)
? {
? ? p=(p*a)%maxn;
? }
? return p;
}
void display()
{
? ? a[1]=0;
? ? a[2]=2;
? ? for(int i=3;i<=10000;i++)
? ? {
? ? ? ?a[i]=(a[i-1]%maxn+(int)pow(2,i)%maxn-2+maxn)%maxn;
? ? }
}
int main()
{
? ?int n;
? ?display();
? ?while(cin>>n)
? ?{
? ? ? printf("%d\n",a[n]);
? ?}
? ?return 0;
}
總結
以上是生活随笔為你收集整理的QAQ的幸运数字 数学的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: node.js工程的结构
- 下一篇: 数据结构前缀,后缀,中缀表达式