我同学在joj上出的一个题 其中涉及到数据较大的问题正常方法用long long 是存不下的 因此要用数组模拟这个比较大得数,但是 其中有一个小技巧 就是数据问题 要是队数据做一下预处理的话用正常数据是可以实现的
同时因为数据量不是很大的原因 这里如果用完全搜索的方法 也是不会超过时间限定的 我这里给出用预处理方法给出的答案 其实问题很简单 只是用溶斥原理去解
#include <stdio.h>
long long a;
long long b;
int init()
{
scanf("%lld",&a);
if(a==0)
return 0;
return 1;
}
void solve()
{
int i;
int j;
long long n1;
long long n2;
long long n3;
i=a%3;
j=a%2;
n1=a;n2=a-1;n3=a-2;
if(a<4)
{
printf("0/n");
return;
}
if(j)
n2/=2;
else
n1/=2;
if(i==0)
n1/=3;
else if(i==1)
n2/=3;
else if(i==2)
n3/=3;
b=n1*n2*n3-(a-2)*(a-2);
printf("%lld/n",b);
return;
}
int main()
{
while(init())
solve();
return 0;
}
先看一看吧 当然还是可以再简化的 呵呵