這里有一張圖,這張圖是這樣的:
1,四個點A0(0,0), B0(0,1), C0(1,1), D0(1,0) 在一個坐標系上,分別對應著圖的四個角
2,連接A0B0, B0C0, C0D0, D0A0,形成一個正方形A0B0C0D0
3,假設我們已經生成了正方形AiBiCiDi,那么正方形Ai+1Bi+1Ci+1Di+1則由AiBi, BiCi, CiDi 和 DiAi 四條邊的中點連接形成的
4,重復上面三個步驟1000次
現在有一條垂直線x = k(0 < = k < 0.5,k最多取到小數點后八位)。辣么問題來了,垂線x和這個圖形一共有多少個交點呢?
在第一行是一個整數T(T < 10000),表示測試用例的數量。
接下來T行,每一行表示一個測試用例。每一行包含一個浮點數k。
對于每個測試用例,輸出一個整數表示答案。如果有無窮多個交點,則輸出-1。
30.3750.0010.478Sample Output
-1420HINT
Source
[Submit][Status] #include <cstdio>#include <iostream>#include <string>#include <cstring>#include <algorithm>using namespace std;int main(){ int cnt; int t; double n,m,num; scanf("%d",&t); while(t--){ n=0.0f; m=0.5f; cnt=0; scanf("%lf",&num); if(num==0){ PRintf("-1"); if(t!=0)printf("/n"); }//忘記考慮取0的情況了 while(num>n){ cnt++; n=(n+m)/2; if(n>num){ printf("%d",cnt*4); if(t!=0)printf("/n"); }else if(n==num){ printf("-1"); if(t!=0)printf("/n"); } } } return 0;}
新聞熱點
疑難解答