题意:(差点没看懂题目。。。囧)前面那个好像是说那句话有两种理解。。。一种是。。。售票员在公共汽车上裸奔?还有一种是。。。。?。。。(无关紧要- -)
给精确到0.01的p和q,求最小的i,使得存在整数x,i*p < x < i*q。
思路:(这道题我WA了好多次我会说麽。。。)我还是不晓得怎么弄精度的东西。。。希望高人指点啊。。。我的做法是。。。由于p和q是精确到0.01,我就把p和q都扩大到100倍。。。这样就没有浮点误差了吧干!剩下的就好说了。。。
#include <cstdio>
#include <cstring>
#include <cstdlib>
int p, q;
int solve()
{
int l, h;
for (int i = 1; i <= 10000; ++ i)
{
l = i*p;
h = i*q-1;
if (l/10000 != h/10000) return i;
}
return 10000;
}
bool isdigit(char c) { return (c>='0' && c<='9'); }
int func()
{
char data[10];
scanf("%s",data);
int ret=0, i;
for (i = 0; data[i]!='.'&&data[i]!='\0'; ++ i) ret = ret*10 + data[i]-'0';
ret *= 100;
if (strlen(data)-i == 2) ret += (data[i+1]-'0')*10;
else if (strlen(data)-i == 3) ret += (data[i+1]-'0')*10 + data[i+2]-'0';
return ret;
}
void input()
{
p = func();
q = func();
}
int main()
{
input();
printf("%d\n", solve());
system("pause");
}