#include <stdio.h>
#include <vector>
using namespace std;
const int max_prime = 32000;
bool sieve_primes[max_prime];
vector<int> primes;
void sieve() {
sieve_primes[0]=sieve_primes[1]=true;
for(int i=2;i<max_prime;i++)
if(!sieve_primes[i]) {
primes.push_back(i);
for(int j=2*i;j<max_prime;j+=i)
sieve_primes[j]=true;
}
}
void factor(int n, vector<int> &f) {
if(n==1) {
f.push_back(1);
return;
}
for(unsigned int i=0;i<primes.size();i++) {
int prime = primes[i];
while(n%prime == 0) {
f.push_back(prime);
n/=prime;
}
}
if(n>1)
f.push_back(n);
}
int main(int argc, char **argv)
{
int t, ki;
sieve();
scanf("%d", &t);
while(t--) {
scanf("%d",&ki);
vector<int> factors;
factor(ki, factors);
int num_ones=0;
for(unsigned int i=0;i<factors.size();i++)
num_ones+=factors[i];
if(num_ones>100)
printf("NIE");
else
for(unsigned int i=0;i<factors.size();i++) {
putchar('(');
for(int j=0;j<factors[i];j++) {
putchar('1');
if(j<factors[i]-1)
putchar('+');
}
putchar(')');
if(i<factors.size()-1)
putchar('*');
}
putchar('\n');
}
return 0;
}
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 | #include <stdio.h> #include <vector> using namespace std; const int max_prime = 32000; bool sieve_primes[max_prime]; vector<int> primes; void sieve() { sieve_primes[0]=sieve_primes[1]=true; for(int i=2;i<max_prime;i++) if(!sieve_primes[i]) { primes.push_back(i); for(int j=2*i;j<max_prime;j+=i) sieve_primes[j]=true; } } void factor(int n, vector<int> &f) { if(n==1) { f.push_back(1); return; } for(unsigned int i=0;i<primes.size();i++) { int prime = primes[i]; while(n%prime == 0) { f.push_back(prime); n/=prime; } } if(n>1) f.push_back(n); } int main(int argc, char **argv) { int t, ki; sieve(); scanf("%d", &t); while(t--) { scanf("%d",&ki); vector<int> factors; factor(ki, factors); int num_ones=0; for(unsigned int i=0;i<factors.size();i++) num_ones+=factors[i]; if(num_ones>100) printf("NIE"); else for(unsigned int i=0;i<factors.size();i++) { putchar('('); for(int j=0;j<factors[i];j++) { putchar('1'); if(j<factors[i]-1) putchar('+'); } putchar(')'); if(i<factors.size()-1) putchar('*'); } putchar('\n'); } return 0; } |
English