Post
by Morning » Mon Jan 26, 2004 11:02 am
this is my code,maybe someone can help me,i got a WA
[cpp]
#include <iostream.h>
int main(int argc, char* argv[])
{
int n,m,loops,loopm,p,i,loop,temp;
long long mo[2],so[2];
int prime[]={2,3,5,7,11,13,17,19,23,29,31,37,41,43,47,53,59,61,67,71,73,79,83,89,97};
long long mother[100],son[100],answer,sums,summ;
while(cin>>n>>m)
{
if(n==m && m==0) break;
so[0]=n-m+1;
so[1]=n;
mo[0]=1;
mo[1]=m;
if(m>n-m+1)
{
mo[1]=n-m;
so[0]=m+1;
}
/*son=1;
for(;so[0]<=so[1];so[0]++)
son*=so[0];
cout<<son<<endl;
mother=1;
for(;mo[0]<=mo[1];mo[0]++)
mother*=mo[0];
cout<<mother<<endl;
answer=son/mother;*/
loops=1;
son[0]=so[0];
while(loops<=so[1]-so[0])
{
son[loops]=son[loops-1]+1;
loops++;
}
loops--;
loopm=1;
mother[0]=mo[0];
while(loopm<=mo[1]-mo[0])
{
mother[loopm]=mother[loopm-1]+1;
loopm++;
}
loopm--;
for(p=0;p<25;p++)
{
loop=loops;
while(loop>=0)
{
if (son[loop]%prime[p]==0)
{
for(i=0;i<=loopm;i++)
if(mother%prime[p]==0)
{
son[loop]/=prime[p];
mother/=prime[p];
if(son[loop]%prime[p]==0) continue;
else break;
}
}
loop--;
}
}
/*temp=loops;
while(temp>=0)
{
cout<<son[temp]<<endl;
temp--;
}
temp=loopm;
while(temp>=0)
{
cout<<mother[temp]<<endl;
temp--;
}
*/
sums=1;
while(loops>=0)
{
sums*=son[loops];
loops--;
}
summ=1;
while(loopm>=0)
{
summ*=mother[loopm];
loopm--;
}
answer=sums/summ;
cout<<n<<" things taken "<<m<<" at a time is "<<answer<<" exactly."<<endl;
}
return 0;
}[/cpp]
"Learning without thought is useless;thought without learning is dangerous."
"Hold what you really know and tell what you do not know -this will lead to knowledge."-Confucius