Skip to content

Commit

Permalink
Problem 10110
Browse files Browse the repository at this point in the history
  • Loading branch information
SeanStarkey committed Jun 21, 2013
1 parent 60d6ef7 commit 37c7d0c
Show file tree
Hide file tree
Showing 2 changed files with 59 additions and 0 deletions.
52 changes: 52 additions & 0 deletions uva10110.cpp
Original file line number Diff line number Diff line change
@@ -0,0 +1,52 @@
/*
* UVa Online Judge - Problem 10110
*/

#include <iostream>
#include <math.h>
#include <map>

int main()
{
while (1)
{
unsigned long number;
std::cin >> number;
if (number == 0)
return 0;

std::map<unsigned long,unsigned long> factors;
while (number%2 == 0)
{
number /= 2;
factors[2]++;
}

unsigned long i = 3;
float sqrtNumber = sqrt(number)+1;
while (i < sqrtNumber)
{
if (number == (number/i)*i)
{
number /= i;
factors[i]++;
sqrtNumber = sqrt(number)+1;
}
else
{
i += 2;
}
}
if (number != 1)
factors[number]++;

unsigned numberDivsors = 1;
for (std::map<unsigned long,unsigned long>::iterator it = factors.begin(); it != factors.end(); it++)
{
numberDivsors *= (it->second + 1);
// std::cout << it->first << ":" << it->second << "\n";
}
std::cout << (numberDivsors%2==1 ? "yes\n" : "no\n");
}
return 0;
}
7 changes: 7 additions & 0 deletions uva10110.txt
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
3
6241
8191
360
4294967295
4294967291
0

0 comments on commit 37c7d0c

Please sign in to comment.