#UVa:10110-Light, more light

灆洢 2012-03-17 08:34:48

判斷該燈是否為亮或暗,會因為其因數個數而決定。

Ex. 8: 1, 2, 4, 8 -表示按下1號、2號、4號、8號都會影響該燈的亮暗。

當因數個數為偶數,則該燈會是暗的;當因數個數為奇數,則該燈會是亮的。而如何判斷因數個數的奇偶只要知道該數是否為完全平方數即可,若為完全平方數則因數個數即為奇數。

P.S. 範圍最大會到2^32-1,記得要用unsigned int。

C++(0.028)

/*******************************************************/
/* UVa 10110 Light, more light                         */
/* Author: Maplewing [at] knightzone.studio            */
/* Version: 2012/03/17                                 */
/*******************************************************/
#include<iostream>
#include<cstdio>
#include<cmath>
#define ERROR 1e-8
using namespace std;

int main(){
  double n;
  while( scanf( "%lf", &n ) != EOF && n != 0.0 ){
    unsigned int sqrt_num = (int)(sqrt(n)+ERROR);
    if( (double)(sqrt_num * sqrt_num) == n )
      printf( "yes\n" );
    else
      printf( "no\n" );
  }
  return 0;
}

發佈留言

發佈留言必須填寫的電子郵件地址不會公開。 必填欄位標示為 *

這個網站採用 Akismet 服務減少垃圾留言。進一步瞭解 Akismet 如何處理網站訪客的留言資料