程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> C語言 >> C++ >> C++入門知識 >> 10167 - Birthday Cake

10167 - Birthday Cake

編輯:C++入門知識

[cpp] 
描述:我是完全把圓邊緣的點都算出來,放到一個數組裡,然後查詢就可以了 
 
#include <iostream> 
#include <cstdio> 
#include <cstring> 
#include <cmath> 
using namespace std; 
int num[1010][2],s[100010][2]; 
int main() 

    //freopen("a.txt","r",stdin); 
    int n,i,j; 
    for(i=500; i<1000; i++) 
    { 
        num[i][1]=-sqrt(250000-(i-500)*(i-500)); 
        num[i][0]=num[1000-i][0]=i-500; 
        num[1000-i][1]=-num[i][1]; 
    } 
    while(scanf("%d",&n)!=EOF) 
    { 
        if(!n) break; 
        memset(s,0,sizeof(s)); 
        for( i=0; i<2*n; ++i) 
            scanf("%d%d",&s[i][0],&s[i][1]); 
        int up,down; 
        for(j=0; j<1000; j++) 
        { 
            up=down=i=0; 
            while(i<2*n) 
            { 
                if(num[j][0]*s[i][0]+num[j][1]*s[i][1]==0)break; 
                else if(num[j][0]*s[i][0]+num[j][1]*s[i][1]>0) up++; 
                else down++; 
                i++; 
            } 
            if(i==2*n&&up==down) 
            { 
                printf("%d %d\n",num[j][0],num[j][1]); 
                break; 
            } 
        } 
    } 
    return 0; 

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved