您的位置:首页 > 其它

素数三元组 &&整数划分&& 小光棍数

2016-07-20 11:11 309 查看


素数三元组

时间限制:1000 ms | 内存限制:65535 KB
难度:1

描述

相邻三个奇数都是素数是一种非常少见的情形,也就是三个奇数p-2, p, p+2都是素数,这样就形成了一个素数三元组。请找出三个数都不超过n的所有这样的素数三元组。



输入输入多组数据,每组测试数据为一个正整数n,n <= 5000000。
输出输出大小不超过n的所有的素数三元组,每行按照从小到大的顺序输出一个三元组中的三个数,两个数之间用空格间隔。如果不存在这样的素数三元组,请输出“No triple”。
样例输入
1


样例输出
No triple


#include<stdio.h>

int main()

{

int n;

while(~scanf("%d",&n))

{

if(n>=7)printf("3 5 7\n");

else

printf("No triple\n");

}

return 0;

}


整数划分

时间限制:3000 ms | 内存限制:65535 KB
难度:3

描述将正整数n表示成一系列正整数之和:n=n1+n2+…+nk,

其中n1≥n2≥…≥nk≥1,k≥1。

正整数n的这种表示称为正整数n的划分。求正整数n的不

同划分个数。

例如正整数6有如下11种不同的划分:

6;

5+1;

4+2,4+1+1;

3+3,3+2+1,3+1+1+1;

2+2+2,2+2+1+1,2+1+1+1+1;

1+1+1+1+1+1。

输入第一行是测试数据的数目M(1<=M<=10)。以下每行均包含一个整数n(1<=n<=10)。
输出输出每组测试数据有多少种分法。
样例输入
1
6


样例输出
11


#include<stdio.h>

int main()

{

int T;

int a[11]={0,1,2,3,5,7,11,15,22,30,42};

scanf("%d",&T);

while(T--)

{

int n;

scanf("%d",&n);

printf("%d\n",a
);

}

return 0;

}


小光棍数

时间限制:1000 ms | 内存限制:65535 KB
难度:1

描述最近Topcoder的XD遇到了一个难题,倘若一个数的三次方的后三位是111,他把这样的数称为小光棍数。他已经知道了第一个小光棍数是471,471的三次方是104487111,现在他想知道第m(m<=10000000000)个小光棍数是多少?

输入有多组测试数据。第一行一个整数n,表示有n组测试数据。接下来的每行有一个整数m。
输出输出第m个小光棍数。
样例输入
1
1


样例输出
471


#include<stdio.h>

int main()

{

int N;

long long m;

scanf("%d",&N);

while(N--)

{

scanf("%lld",&m);

if(m==1)

printf("471\n");

else if(m>1)

printf("%lld471\n",m-1);

}

return 0;

}

为什么把这三个题放在一起呢?因为这三个题都需要你在做题之前知道它的特殊之处,

哪里是特殊之处呢?

第一个是素数三元组;它特殊在在题中所给的范围中所有符合相邻为2个距离的并且是奇数的素数只有这一个组合(3.5.7)

第二个规律挺难找的,但是很好计算,这个代码应该是属于凑合型的吧,但是为什么有的题可以凑呢,你要看它的测试数据范围大小,你可以选择哪种比较好,这道题只测试0到10这个范围内对整数划分,规律找不出来,测试数据范围小,所以选择了后者。

这个和在某一个范围里面求阶乘类似,例如题中用到了阶乘范围在10 0000 0000中的阶乘,这时候你再用一个函数去每次求其的阶乘,就会降低时间效率。这只是其一,并且还要多敲这么多代码,这时候你只要记住0-10的就成就行了不是吗?吧他们放在一个数组里面,你就可以非常方便的使用了。如果说题的要求就是让你求得1-10的阶乘,那直接把结果下出来的话,在时间效率上是一定不会超时的,就是简单输入,判断,输出了。

第三道题是小光棍数,倘若一个数的三次方的后三位是111,他把这样的数称为小光棍数。471的三次方后面三位是111,发现一个数后三位是111的只有471了,那么

0471 .1471 ,2471 .3471 .4471 ...他们的三次方的后三位也都是111,那这个就是符合题意的结果了。

三个题的特殊之处都是你要知道他的特别之处,都是在做题之前就知道其结果是固定的且是唯一的或者共性的并且是可以记住的
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: