| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 364 人关注过本帖
标题:关于杭点的1006,看到别人写,自己试试看
只看楼主 加入收藏
Magic_July
Rank: 3Rank: 3
等 级:论坛游侠
帖 子:102
专家分:109
注 册:2012-9-25
结帖率:100%
收藏
 问题点数:0 回复次数:1 
关于杭点的1006,看到别人写,自己试试看
程序代码:
#include"stdio.h" //一共有 43200秒 
#include"math.h"
int ff(int sec,float d)//做一个判断是否符合条件 
{
    float h_d,min_d,sec_d;//1s=6度,1/60min=0.1度,1/3600h=1/600度
    sec_d=sec%60*6;
    min_d=sec%3600*0.1;
    h_d=sec%43200*1/600;
    return (fabs(sec_d-min_d)>d)*(fabs(sec_d-h_d)>d)*(fabs(min_d-h_d)>d);
} 
int main()
{
    int i,su,s;
    float dd;
    while(scanf("%f",&dd),dd!=-1)
    {
        //printf("%f\n",d);
        for(i=0,su=0;i<43200;i++)
        {
            su+=ff(i,dd);
            //printf("%d\n",i);
        }
        //printf("%d %.3f\n",su,float(su)/43200);
        printf("%.3f\n",float(su*2)/43200*100);//不清楚这里有没有4舍5入的说法 
    }
}

这是我写的1006的代码
就里前面是从1-43200秒半天,暴力算每一秒的情况,我把调用函数单独调出来调试,在2999秒时是错误的 ,但放在这个完整的函数中的时候就是对的,被计算进去的这第2999秒
这就有点狗
不知道是不是自己的思路错
个人理解题目是3个针,秒针,分针,时针,
分每一秒去判断
因为数据不是很大,就选择用这么暴力的解法

[ 本帖最后由 Magic_July 于 2013-5-7 19:50 编辑 ]
2013-05-07 19:49
Magic_July
Rank: 3Rank: 3
等 级:论坛游侠
帖 子:102
专家分:109
注 册:2012-9-25
收藏
得分:0 
程序代码:
#include"stdio.h" //一共有 43200秒 
#include"math.h"
#include"stdlib.h"
int comp(const void *a,const void *b)
{
return *(int *)a-*(int *)b;
}
int ff(int sec,float d)//做一个判断是否符合条件 
{
    float ss[3];//1s=6度,1/60min=0.1度,1/3600h=1/600度
    int i,j;
    ss[0]=sec%60*6; 
    ss[1]=sec%3600*0.1; 
    ss[2]=sec%43200*1/600;
    qsort(ss,3,sizeof(float),comp);
    if(ss[2]+d<360)
    return (fabs(ss[0]-ss[1])>=d)*(fabs(ss[1]-ss[2])>=d);
    else if(fabs(ss[0]+360-ss[2])>d)
    return (fabs(ss[0]-ss[1])>=d)*(fabs(ss[1]-ss[2])>=d);
    return 0;
} 
int main()
{
    int i,su,s;
    float dd;
    while(scanf("%f",&dd),dd!=-1)
    {
        printf("%f\n",dd);
        for(i=0,su=0;i<43200;i++)
        su+=ff(i,dd);
        printf("%d %f\n",su,float(su)/43200);
        printf("%.3f\n",float(su)/43200*100);//不清楚这里有没有4舍5入的说法 
    }
}

这是改进的代码
但就是错.....90的时候是错的
是精度问题吗 ?
我想了一个晚上了
杀了我把
2013-05-07 20:51
快速回复:关于杭点的1006,看到别人写,自己试试看
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.034618 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved