NKOJ 1007,1249
http://acm.nankai.edu.cn/p1007.html,http://acm.nankai.edu.cn/p1249.html
這是兩個(gè)關(guān)于分解素?cái)?shù)的問題,一個(gè)是分解為素?cái)?shù)之和,一個(gè)是分解為素?cái)?shù)之積。自己寫的總TLE,于是參考了別人的代碼,感覺方法果然巧妙。對于素?cái)?shù)之和是找到素?cái)?shù)規(guī)律了。
nkoj 1007
#include<stdio.h>
#include<stdlib.h>
int n;
int main()
{
scanf("%d",&n);
if(n%3){
switch(n%3){
case 1:printf("2 2 ");n-=4;break;
case 2:printf("2 ");n-=2;break;
}
}
while(n){
printf("3 ");
n-=3;
}
system("pause");
return 0;
}
code#include<stdlib.h>
int n;
int main()
{
scanf("%d",&n);
if(n%3){
switch(n%3){
case 1:printf("2 2 ");n-=4;break;
case 2:printf("2 ");n-=2;break;
}
}
while(n){
printf("3 ");
n-=3;
}
system("pause");
return 0;
}
nkoj 1249
#include<stdio.h>
#include<math.h>
int n,a;
int main()
{
scanf("%d",&n);
while(n--){
scanf("%d",&a);
int i,flag = 0;
int b=a;
for(i = 2;i <= b/2;i++){
if(a%i==0 && flag==0){
flag = 1;
a/=i;
printf("%d",i);
}
while(a%i==0){
a/=i;
printf("*%d",i);
}
}
if(flag == 0)printf("%d",a);
printf("\n");
}
return 0;
}
#include<math.h>
int n,a;
int main()
{
scanf("%d",&n);
while(n--){
scanf("%d",&a);
int i,flag = 0;
int b=a;
for(i = 2;i <= b/2;i++){
if(a%i==0 && flag==0){
flag = 1;
a/=i;
printf("%d",i);
}
while(a%i==0){
a/=i;
printf("*%d",i);
}
}
if(flag == 0)printf("%d",a);
printf("\n");
}
return 0;
}