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

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

牛客网Wannafly挑战赛29 B - 白井黑子 乱搞

發布時間:2024/3/26 编程问答 53 豆豆
生活随笔 收集整理的這篇文章主要介紹了 牛客网Wannafly挑战赛29 B - 白井黑子 乱搞 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

Description


kuroko 作為常盤臺唯一的空間系能力者,在每年例行的能力測試中可絕對不能讓 misaka 失望哦,但是由于她的等級只是 level 4「大能力者」,在能力測試中會遇到不少困難。kuroko 是一個凡事都會盡力的好女孩,所以請你幫她算出她最多能完成多少測試吧

對于空間系能力者測試的內容是檢驗對物體進行空間移動的能力,測驗時一共有 n 個物品放在一條直線上,每個物品都有一個坐標 ai ,kuroko 可以選擇兩個物品并使用能力交換它們的位置,但是如果兩個物品的坐標不滿足 kuroko 的計算公式的話,她就沒有辦法使用能力。

具體來說,對于坐標 ai ,其在 kuroko 的計算公式中是用參數 f(ai) 表示的。f(ai) 是 ai 各數位相乘的結果,由于 level 4「大能力者」在學園都市中也是很強大的存在,所以滿足公式的條件不會太苛刻,對于兩個物品 ai, aj ,如果 f(ai) x f(aj) 不能被某個自然數的 k 次冪表示 的話,那么 kuroko 就能對這兩個物品使用能力。

現在 kuroko 想知道,有多少對物品她可以對其施展能力,知道了這個后她就知道自己能完成多少測驗了。

這里認為任何自然數的 0 次冪都是 1。

2 ≤ n ≤ 105, 0 ≤ ai, k ≤ 1018

Solution


我們把f分解一下,質數只有2、3、5、7四種。兩數相乘是某個自然數的k次冪說明它們指數上和模k為0。由于260小于1018,我們開604的桶直接統計就沒了
注意k=0和k=1的情況

Code


#include <stdio.h> #include <string.h> #include <algorithm> #include <vector> #include <map> #define rep(i,st,ed) for (int i=st;i<=ed;++i)typedef long long LL; const int N=200005;LL cnt[63][63][63][63],p[N][4];LL a[N],k;int n,tot;void solve1() {LL ans=1LL*n*(n-1)/2;rep(i,1,n) {LL v,x=1; scanf("%lld",&v);for (;v;v/=10) x=x*(v%10);if (!x) continue;a[++tot]=x;for (;x%2==0;x/=2) p[tot][0]++; p[tot][0]%=k;for (;x%3==0;x/=3) p[tot][1]++; p[tot][1]%=k;for (;x%5==0;x/=5) p[tot][2]++; p[tot][2]%=k;for (;x%7==0;x/=7) p[tot][3]++; p[tot][3]%=k;}rep(i,tot+1,n) ans=(ans-(n-i+tot));n=tot;rep(i,1,n) {if ((k-p[i][0]%k)%k<=60&&(k-p[i][1]%k)%k<=60&&(k-p[i][2]%k)%k<=60&&(k-p[i][3]%k)%k<=60) {ans-=cnt[(k-p[i][0]%k)%k][(k-p[i][1]%k)%k][(k-p[i][2]%k)%k][(k-p[i][3]%k)%k];}cnt[p[i][0]][p[i][1]][p[i][2]][p[i][3]]++;}printf("%lld\n", ans); }void solve3() {LL ans=(n-1)*n/2,wjp=0;rep(i,1,n) {LL v,x=1; scanf("%lld",&v);for (;v;v/=10) x=x*(v%10);a[i]=x;if (x==1) wjp++;if (!x) continue;for (;x%2==0;x/=2) p[i][0]++;for (;x%3==0;x/=3) p[i][1]++;for (;x%5==0;x/=5) p[i][2]++;for (;x%7==0;x/=7) p[i][3]++;}printf("%lld\n", ans-(wjp-1)*wjp/2); }int main(void) {freopen("data.in","r",stdin);freopen("myp.out","w",stdout);scanf("%d%lld",&n,&k);if (k==0) solve3();else if (k==1) puts("0");else solve1();return 0; }

總結

以上是生活随笔為你收集整理的牛客网Wannafly挑战赛29 B - 白井黑子 乱搞的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。