2.2 进阶-禁忌雷炎
生活随笔
收集整理的這篇文章主要介紹了
2.2 进阶-禁忌雷炎
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
題目:
赫柏在絕域之門擊敗魯卡斯后,從魯卡斯身上掉落了一本高級技能書,赫柏打開后驚喜地發現這是一個早已失傳的上古技能---禁忌雷炎。
該技能每次發動只需扣很少的精神值,而且輸出也非常高。
具體魔法描述如下:
把地圖抽象為一個二維坐標,技能發動者位于(0,0)位置。以技能發動者為中心,做一個半徑為r的圓,滿足r^2=S,如果敵人位于這個圓上,且位置為整點坐標,這個敵人將收到該技能的輸出傷害。。
例如當S=25時,將有12個敵人受到該技能的輸出傷害,如下圖所示:
更厲害的是,禁忌雷炎可以通過改變魔法輸入來控制S的大小,因此數學好的魔法師可以通過該技能攻擊到更多的敵人。
赫柏想將這個技能學會并成為自己的主技能,可數學是他的硬傷,所以他請求你為他寫一個程序,幫幫他吧,沒準他就把禁忌雷炎與你分享了 : )
輸入描述:
多組測試數據,請處理到文件結束。對于每組測試數據,只包含一個整數S。保證:1<=S<=2,000,000,000。輸出描述:
輸出一個整數,代表受到禁忌雷炎傷害的敵人數量。示例1
輸入
25 3輸出
12 0代碼:
#include <iostream> #include <cmath> using namespace std; int main() {int s,x,y,i;while(cin>>s){int cnt=i=0; // for(x=0;x*x<s;x++) // {//若x*x<=s,并且坐標軸上存在點會多計算四個,cnt不用減四 // int tem=s-x*x; // y=(int)sqrt(tem); // if(y*y==tem) cnt++; // }for(x=0;x*x<=s;x++){int tem=s-x*x;y=(int)sqrt(tem);if(y*y==tem) cnt++;if(y*y==tem&&x==0) i=1; }// cout<<cnt*4<<endl;if(i==0) cout<<cnt*4<<endl;else cout<<cnt*4-4<<endl;}return 0; }?
總結
以上是生活随笔為你收集整理的2.2 进阶-禁忌雷炎的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 初学Java-循环输入直到文件结束
- 下一篇: 3.1 基础-抛小球