| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 385 人关注过本帖
标题:[求助]求组合数
只看楼主 加入收藏
Lawster
Rank: 1
等 级:新手上路
帖 子:12
专家分:0
注 册:2006-6-26
收藏
 问题点数:0 回复次数:0 
[求助]求组合数
问题描述
在平面中给出了n个点。这些点任三点不共线,并且每两个点之间都有一条线相连,求三角形的数目。
输入
输入文件只有一行,这一行有若干个整数,相邻两个整数用一个空格隔开。每个整数N满足(1<=N<=2,000,000)。
输出
输出文件有若干行。对输入文件中的每个整数N,输出一行,输出内容是三角形的数目。
输入样例
3 4 5

输出样例
1
4
10


我的程序:
#include "stdio.h"

#include<fstream.h>
ifstream fin("input.txt");
ofstream fout("output.txt");

#define cin fin
#define cout fout

void MultiplyH(int a[],int b[],int c[],int d[]) // 高精度×高精度
{
int temp[13];
int i,j;

for(i=0;i<7;i++)
{
for(j=0;j<7;j++)
{
temp[i+j]=a[i]*b[j];
temp[i+j+1]+=temp[i+j]/10;
temp[i+j]%=10;
}
}

for(i=0;i<13;i++)
{
for(j=0;j<7;j++)
{
d[i+j]=temp[i]*c[j];
d[i+j+1]+=d[i+j]/10;
d[i+j]%=10;
}
}
}

void Divide(int a[],int b,int c[]) // 高精度/单精度
{
int i,d=0;

for(i=18;i>=0;i--)
{
d=d*10+a[i];
c[i]=d/b;
d%=b;
}
}

void main()
{
int n,i,j,SubPoint;

while(cin>>n)
{
int a[7],b[7],c[7],d[19],e[19];

for(i=0;i<7;i++) // Initialize a[7]
{
a[i]=n%10;
n=n/10;
}

if(a[0]!=0) // Initialize b[7]
{
b[0]=a[0]-1;
for(i=1;i<7;i++) b[i]=a[i];
}
else{
i=1;
while(a[i]=0) i++;
SubPoint=i;
for(i=0;i<SubPoint;i++) b[i]=9;
b[SubPoint]=a[SubPoint]-1;
for(i=SubPoint+1;i<7;i++) b[i]=a[i];
}

if(b[0]!=0) // Initialize c[7]
{
c[0]=b[0]-1;
for(i=1;i<7;i++) c[i]=b[i];
}
else{
i=1;
while(b[i]=0) i++;
SubPoint=i;
for(i=0;i<SubPoint;i++) c[i]=9;
c[SubPoint]=b[SubPoint]-1;
for(i=SubPoint+1;i<7;i++) c[i]=b[i];
}

MultiplyH(a,b,c,d);
Divide(d,6,e);

i=18;
while(e[i]=0) i--;

for(j=i;j>=0;j--) cout<<e[j];
cout<<endl;
}
}

请问我的程序哪儿不对? 谢谢!
搜索更多相关主题的帖子: include 三角形 
2006-06-29 23:18
快速回复:[求助]求组合数
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.039178 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved