2017中国大学生程序设计竞赛

来源:互联网 发布:微博爬虫java 编辑:程序博客网 时间:2024/06/07 09:42

题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=6154


画图形找规律。


#include <iostream>#include <stdio.h>#include <algorithm>using namespace std;int cnt;const int maxn = 1e5;int num[maxn];         ///面积对应的线段条数double area[maxn];     ///面积void createTable(){    double sum1=1.5,sum2=4;    area[0] = 0.5;    num[0] = 3;    area[1] = 2;    num[1] = 4;    area[2] = 2.5;    num[2] = 5;    area[3] = 4;    num[3] = 6;    area[4] = 5.5;    num[4] = 7;    cnt=5;    for(int i = 8; i < maxn; i++)           ///线段条数。    {        int yu=i%4;        if(yu==0)        {            area[cnt]=area[cnt-2]+sum2;        }        else if(yu==3)        {            area[cnt]=area[cnt-1]+sum1;        }        else            if(yu==2)        {            area[cnt]=area[cnt-2]+sum2;            sum2+=2.0;        }        else            if(yu==1)        {            area[cnt]=area[cnt-1]+sum1;            sum1+=1.0;        }       num[cnt]=i;       cnt++;    }}int main(){    int t ;    double n;    createTable();    scanf("%d",&t);    while(t--)    {        scanf("%lf",&n);        if(n<=0)        {            printf("0\n");            continue;        }        int pos = lower_bound(area,area+cnt,n)-area;        printf("%d\n",num[pos]);    }    return 0;}


原创粉丝点击