Блог пользователя map

Автор map, 13 лет назад, По-русски
  1. http://codeforces.net/contest/140/submission/1000181 :
  2. #include<stdio.h>
  3. #include<string.h>
  4. #include<math.h>
  5. #define esp 1e-8
  6. int n,a,b;
  7. double c,cc;
  8. int main(){
  9.     int m;
  10.     scanf("%d%d%d",&n,&a,&b);
  11.     if (n==1){
  12.         if (a>=b) printf("YES\n");
  13.         else printf("NO\n");
  14.         return 0;
  15.     }
  16.     cc=asin(1.0)*2.0/(double)n;
  17.     c=asin(b/(a-b+0.0));
  18.     if (c<cc+esp) printf("YES\n");
  19.     else printf("NO\n");
  20.     return 0;
  21. }

n = a = b = 5 - при взломе выдало "NO".
c=asin(b/(a-b+0.0));  - довольно странно должно было посчитаться.
  • Проголосовать: нравится
  • +1
  • Проголосовать: не нравится

»
13 лет назад, # |
  Проголосовать: нравится 0 Проголосовать: не нравится
Поделили вещественно на ноль - получили inf. Посчитали арксинус - получили nan. Все нормально.
»
13 лет назад, # |
  Проголосовать: нравится 0 Проголосовать: не нравится
И по каким правилам сравнивается с обычными числами?
»
13 лет назад, # |
  Проголосовать: нравится 0 Проголосовать: не нравится
У меня в комнате таких товарищей было штуки 4. Так и не придумал, как извлечь пользу от этого nan - IF всегда вываливает в закономерный "NO" =(
»
13 лет назад, # |
  Проголосовать: нравится +3 Проголосовать: не нравится
с - это какой-то -1.#IND00, который сравнивается черт знает как. Видимо он меньше чем что угодно, поэтому и NO.

»
13 лет назад, # |
  Проголосовать: нравится 0 Проголосовать: не нравится
Я что-то не вижу чтоб это работало: это решение получило вердикт "Неправильный ответ на тесте 25".