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

歡迎訪問 生活随笔!

生活随笔

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

编程问答

牛客——黑魔法师

發布時間:2024/3/26 编程问答 36 豆豆
生活随笔 收集整理的這篇文章主要介紹了 牛客——黑魔法师 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

鏈接:https://www.nowcoder.com/acm/contest/215/A
來源:牛客網
?

時間限制:C/C++ 1秒,其他語言2秒
空間限制:C/C++ 262144K,其他語言524288K
64bit IO Format: %lld

題目描述

“White shores, and beyond. A far green country under a swift sunrise.”--灰魔法師

給出長度為n的序列a, 求有多少對數對 (i, j) (1 <= i < j <= n) 滿足 ai + aj 為完全平方數。

輸入描述:

第一行一個整數 n (1 <= n <= 105) 第二行 n 個整數 ai (1 <= ai <= 105)

輸出描述:

輸出一個整數,表示滿足上述條件的數對個數。

示例1

輸入

復制

3 1 3 6

輸出

復制

2

說明

滿足條件的有 (1, 2), (2, 3) 兩對。

?這個是牛客上的一個小比賽的簽到題,是最簡單的一道,而且過得人也比較多,當時我感覺我也能坐,最后我發現我想多了,寫了半年也沒有寫出來,其實寫是非常好寫的,但是就是容易超時,所以必須優化,最后還是看了別人的代碼才把這道題給敲了出來,唉,歸根究底還是自己太菜了吧,以后繼續好好的刷題吧,沒有什么是·一蹴而就的,下面給出AC代碼。

#include<stdio.h> #include<string.h> using namespace std; #define ll long long ll a[5000] ; ll b[100007]; int main() {memset(b,0,sizeof(b));ll n,cnt,m;cnt=1;for(ll i=1;i*i<=200000;i++)a[cnt++]=i*i; //打表,先把平方的值給打印下來;scanf("%lld",&n);for(ll i=1;i<=n;i++){scanf("%lld",&m);b[m]++;} //因為是100000個數,而且每個//數的值都小于100000,所以我們可以判斷出里面會有很多的重復的數字,把那些重復的數字統計起來,減小運行的時間;ll ans1=0,ans2=0;for(ll i=1;i<cnt;i++){for(ll j=1;j<=100000;j++){if(b[j]==0)continue;ll tmp=a[i]-j;if(tmp>100000) continue;if(tmp<=0) break;if(b[tmp]){if(tmp==j) ans1+=(b[j]*(b[j]-1))/2;else ans2+=b[j]*b[tmp];}}}ans1=ans1+ans2/2;printf("%lld",ans1);return 0; }

?

總結

以上是生活随笔為你收集整理的牛客——黑魔法师的全部內容,希望文章能夠幫你解決所遇到的問題。

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