1 秒262,144 kb
20 分
3 級題
統計一下 aaa ⋯ aaan個a × baaa ⋯ aaa⏟n個a × b 的結果裡面有多少個數字d,a,b,d均為一位數。
樣例解釋:
3333333333*3=9999999999,裡面有10個9。
收起
多組測試資料。第一行有乙個整數t,表示測試資料的數目。(1≤t≤5000)
接下來有t行,每一行表示一組測試資料,有4個整數a,b,d,n。 (1≤a,b≤9,0≤d≤9,1≤n≤10^9)
對於每一組資料,輸出乙個整數佔一行,表示答案。
23 3 9 10
3 3 0 10
10題解:在紙上畫了畫,發現有些規律,想了想,大約9*9種情況;0
我是這麼做的,先暴力求出前15位的情況,把 1 ~ 9 出現的次數都進行記錄,這樣我們只需要對 位數為15的和位數為14的,進行推導分析進行。
最後肯定是有一位數字在不斷地增加,還有個需要注意的地方,已知n和規律,怎麼求所要求數出現次數,這裡只分析最後不斷增加的數:
用 位數為15的找出那些不變化的個數(k),答案 = m - k
m :是最後的位數,當 a*b>=10 , m = n+1; 否則,m = n;
#include#include#include#include#include#include#include#include#include#include#include#include#include#define eps (1e-8)
#define max 0x3f3f3f3f
#define u_max 1844674407370955161
#define l_max 9223372036854775807
#define i_max 2147483647
#define re register
#define pushup() tree[rt]=max(tree[rt<<1],tree[rt<<1|1])
#define nth(k,n) nth_element(a,a+k,a+n); // 將 第k大的放在k位
#define ko() for(int i=2;i<=n;i++) s=(s+k)%i // 約瑟夫
#define ok() v.erase(unique(v.begin(),v.end()),v.end()) // 排序,離散化
using namespace std;
inline int read()
while(c >= '0' & c <= '9') x = x * 10 + c - '0', c = getchar();
return x * f;
}typedef long long ll;
const double pi = atan(1.)*4.;
const int m=1e3+5;
const int n=5e6+5;
struct funf[20];
int main()
}if(n<=15)
if(!f[15].num[d])
if(f[15].num[d]==f[14].num[d])
else
ll sum=m-k;
printf("%lld\n",sum);}}
return 0;
}
51nod1770 數數字 規律
1770 數數字 基準時間限制 1 秒 空間限制 262144 kb 分值 20 難度 3級演算法題 統計一下 aa a aa a n個 a b 的結果裡面有多少個數字d,a,b,d均為一位數。樣例解釋 3333333333 3 9999999999,裡面有10個9。input 多組測試資料。第一行...
51nod 1770數數字(找規律)
統計一下 aaa aaa n個a b 的結果裡面有多少個數字d,a,b,d均為一位數。樣例解釋 3333333333 3 9999999999,裡面有10個9。input 多組測試資料。第一行有乙個整數t,表示測試資料的數目。1 t 5000 接下來有t行,每一行表示一組測試資料,有4個整數a,b,...
51nod 1770 數數字 模擬 思維
統計一下 aa a aa a n個 a b 的結果裡面有多少個數字d,a,b,d均為一位數。樣例解釋 3333333333 3 9999999999,裡面有10個9。input 多組測試資料。第一行有乙個整數t,表示測試資料的數目。1 t 5000 接下來有t行,每一行表示一組測試資料,有4個整數a...