日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 编程资源 > 编程问答 >内容正文

编程问答

【2017 BSUIR Semifinal G】Digital characteristic 题解

發(fā)布時(shí)間:2023/12/14 编程问答 36 豆豆
生活随笔 收集整理的這篇文章主要介紹了 【2017 BSUIR Semifinal G】Digital characteristic 题解 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

題目大意

??定義函數(shù) f(n)f(n)f(n) 表示對(duì) nnn 一直求數(shù)位和直至 nnn 為個(gè)位數(shù),即:
f(n)={nn<10,f(g(n))otherwise,f(n)=\begin{cases} n&n<10, \\ f(g(n))&\text{otherwise,} \end{cases} f(n)={nf(g(n))?n<10,otherwise,?

??其中 g(n)g(n)g(n) 表示 nnn 的數(shù)位和。
??現(xiàn)在有一個(gè)很大的 nnn,你要求 f(n)f(n)f(n)
??這個(gè) nnn 是根據(jù)四個(gè)參數(shù) a,b,m,ka,b,m,ka,b,m,k 生成的,首先生成 kkk 個(gè)數(shù) a,a+b,a+2b,?,a+(k?1)ba,a+b,a+2b,\cdots,a+(k-1)ba,a+b,a+2b,?,a+(k?1)b(都在 modm\bmod~mmod?m 意義下),然后把它們從后往前拼起來(lái),就是 nnn。比如,a=42,b=42,m=2018,k=18a=42,b=42,m=2018,k=18a=42,b=42,m=2018,k=18,會(huì)生成 n=7567146726305885465044624203783362942522101681268442n=7567146726305885465044624203783362942522101681268442n=7567146726305885465044624203783362942522101681268442

??0≤a,b≤109,2≤m≤109+7,1≤k≤1090 \leq a,b \leq 10^9,~~2 \leq m \leq 10^9+7,~~1 \leq k \leq 10^90a,b109,??2m109+7,??1k109
??多測(cè),T≤104T \leq 10^4T104

\\
\\
\\

題解

??數(shù)論技巧什么的。。還是要時(shí)常復(fù)習(xí)啊。。

??首先這個(gè) fff 是有通項(xiàng)公式的,當(dāng) n>0n>0n>0 時(shí) f(n)=(n?1)mod9+1f(n)=(n-1) \bmod 9+1f(n)=(n?1)mod9+1,也即 f(n)=(n%9==0) ?9 :n%9。
??所以我們就是要求 nmod9n \bmod 9nmod9 的值。(特判 n=0n=0n=0
??注意到 ?x>0,10xmod9=1\forall x>0,10^x \bmod 9=1?x>0,10xmod9=1,因此對(duì)于 nnn 來(lái)說(shuō),多個(gè)數(shù)拼起來(lái) mod9\bmod 9mod9 等價(jià)于拆開(kāi)來(lái) mod9\bmod 9mod9 再求和,即 nmod9=∑i=0k?1((a+bi)modm)mod9n \bmod 9 =\sum_{i=0}^{k-1}\big((a+bi) \bmod m \big) \bmod 9nmod9=i=0k?1?((a+bi)modm)mod9

??注意到這個(gè)式子,是先讓 a+bia+bia+bimmm,再求和,模 999。這樣子直接做就不好做,所以要把里面的 modm\bmod~mmod?m 變形:
nmod9=∑i=0k?1((a+bi)??a+bim??m)mod9n \bmod 9 =\sum_{i=0}^{k-1}\big((a+bi)-\lfloor \frac{a+bi}{m} \rfloor \cdot m) \bmod 9 nmod9=i=0k?1?((a+bi)??ma+bi???m)mod9
??這樣就變成類歐了。

代碼

#include<bits/stdc++.h> #define fo(i,a,b) for(int i=a;i<=b;i++) using namespace std;typedef long long LL;LL a,b,m,k;LL f(LL a,LL b,LL c,LL n) {if (!a) return (n+1)*(b/c)%9;if (a>=c || b>=c){LL sqr=(n&1) ?(n+1)/2*n :n/2*(n+1) ;sqr%=9;return (f(a%c,b%c,c,n)+(a/c)*sqr+(n+1)*(b/c))%9;} else{LL m=(a*n+b)/c;return (m%9*n%9-f(c,c-b-1,a,m-1)+9)%9;} }int T; int main() {scanf("%d",&T);while (T--){scanf("%lld %lld %lld %lld",&a,&b,&m,&k);a%=m, b%=m;if (a==0 && (k==1 || k>1 && b==0)) {puts("0"); continue;}int ans=((a*k%9+k*(k-1)/2%9*b%9)%9-m*f(b,a,m,k-1)%9+9)%9;printf("%d\n",(ans==0) ?9 :ans);} }

總結(jié)

以上是生活随笔為你收集整理的【2017 BSUIR Semifinal G】Digital characteristic 题解的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。