Codeforces Round #172 (Div. 2)总结

来源:互联网 发布:中金 知乎 编辑:程序博客网 时间:2024/05/06 08:52

同样今天补的,

A:就是将第一个字母变成大写,水题~

代码:

#include<cstdio>#include<cstring>#define MAX 1001char str[MAX];int main(){    while(scanf("%s",&str)!=EOF)    {if(str[0]>='a'&&str[0]<='z')    str[0]='A'+str[0]-'a';printf("%s\n",str);    }    return 0;}

B题:

这个题的就是求一个最小的差值,注意题目要求的分母分子最小。

代码:

#include<cstdio>#include<cstring>#include<cstdlib>#include<cmath>#include<iostream>using namespace std;double x,y;int n;int main(){    while(scanf("%lf%lf%d",&x,&y,&n)!=EOF)    {if(x==0){    printf("0/1\n");    continue;}double pos=x/y,last=100000;int ansx=0,ansy=0;for(int i=1;i<=n;i++){    for(int j=i*1.0*pos+1;j>=0;j--)    {double ita=j*1.0/i;double itb=fabs(ita-pos);//printf("A %d %d %lf %lf %lf\n",j,i,ita,itb,last);if(ita<pos&&itb>last)    break;if(itb<=last){    if(itb==last)    {if(j<=ansy){    if(j==ansy)    {ansx=min(ansx,i);    }    else    {ansx=i;ansy=j;    }}    }    else    {last=itb;ansx=i;ansy=j;    }}    }    for(int j=i*1.0*pos+1;;j++)    {double ita=j*1.0/i;double itb=fabs(ita-pos);//printf("B %d %d %lf %lf %lf\n",j,i,ita,itb,last);if(itb>last)    break;if(itb<last){    last=itb;    ansx=i;    ansy=j;}    }    }printf("%d/%d\n",ansy,ansx);    }    return 0;}