社区
C语言
帖子详情
编程——数三角形
emmajiang
2004-04-25 03:32:04
其实题目很是简单:
一个等边三角形,如果在其每条边上平分N个点,问可以数出几个三角形,例如每条边上有一个点则可以有5个三角形。大家可要仔细数哟,大家来试试看怎么样编程吧
不过要考虑时间复杂度的问题,N<=500,输入一个N后要在1秒中内得出答案。
快来试试哟
Sample Input
1
2
3
Sample output
5
13
27
...全文
120
11
打赏
收藏
编程——数三角形
其实题目很是简单: 一个等边三角形,如果在其每条边上平分N个点,问可以数出几个三角形,例如每条边上有一个点则可以有5个三角形。大家可要仔细数哟,大家来试试看怎么样编程吧 不过要考虑时间复杂度的问题,N<=500,输入一个N后要在1秒中内得出答案。 快来试试哟 Sample Input 1 2 3 Sample output 5 13 27
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
11 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
languagec
2004-04-26
打赏
举报
回复
假如原先边为n-1,则再加长一个单位时为 n.这时,单位为1的三角形多了 2*n-1 个,单位为2的多了 n-2+1 个,同理单位为3,4……的多了 n-3+1,n-4+1…… 个。直到n-n+1。
就是一个递归过程,不过用递归会益处吧。
#include <iostream.h>
long Sum(long num)
{
long n,sum=0;
n=2;
while(num-n>=0)
{
sum=sum+num-n+1;
n++;
}
//cout<<"Sum="<<sum<<endl;
return sum;
}
int main()
{
long n,sum,s;
while(cin>>n)
{
for(s=1,sum=0;s<=n;s++)
{
sum=sum+2*s-1+Sum(s);
}
cout<<sum<<endl;
}
return 0;
}
我根据思路写了一个,不过提交未过 :(
RPhx
2004-04-26
打赏
举报
回复
自己画图推导一下就可以了,不难的
jiziba
2004-04-26
打赏
举报
回复
#include <iostream>
using namespace std;
int main(int argc, char* argv[]) //argv[1]-原文件,argv[2]-目标文件
{
if(argc!=3)
{
cout<<"Usage:ExeFile SourceFile DestinationFile"<<endl;
return 0;
}
ifstream iFile;
ofstream oFile;
char Data[8];
long SideLen;
long TriNum;
iFile.open(argv[1]);
oFile.open(argv[2]);
while(iFile.getline(Data,8))
{
sscanf(Data,"%d",&SideLen);
if(SideLen == 1) TriNum = 1;
else TriNum = SideLen*SideLen+3*SideLen-5;
oFile<<TriNum<<endl;
}//while
iFile.close();
oFile.close();
}//main
whalefish2001
2004-04-26
打赏
举报
回复
#include <iostream.h>
#include<conio.h>
//using namespace std;
int main()
{
int i,num[2048];
//因为到2048溢出。
num[0]=0;
num[1]=1;
num[2]=5;
for(i=3;i<2048;i++)
{
if((i-long(i/10)*10)%2==1)
num[i]=3*num[i-1]-3*num[i-2]+num[i-3]+1;
else
num[i]=3*num[i-1]-3*num[i-2]+num[i-3]+2;
if (i%10 == 3)getch();
cout<<i<<" : "<<num[i]<<endl;
}
/*
int n;
while(cin>>n)
{
cout<<num[n+1]<<endl;
}
*/
return 0;
}
languagec
2004-04-26
打赏
举报
回复
漏了几种情况
改好了
sum=sum+(num-n)+n/2;
emmajiang
2004-04-25
打赏
举报
回复
那你们是怎么推导出来的呀,能说一下嘛
ync111
2004-04-25
打赏
举报
回复
这到题我也做了
本人也在作浙江大学上的题 以作了几十题
但没到题都要发送好多编才能对
有那位大哥大姐愿意和我一起做的; 以求共同发展;
请记下我的QQ:284301276或272656303
我的邮箱:ync999@163.com
zhp831221
2004-04-25
打赏
举报
回复
这里有浙江大学的吗?怎么知道http://acm.zju.edu.cn/show_problem.php?pid=1629
languagec
2004-04-25
打赏
举报
回复
http://acm.zju.edu.cn/show_problem.php?pid=1629
是这个题吧
freefalcon
2004-04-25
打赏
举报
回复
ft,谁出的题,500刚好溢出,将楼上的改为
#include <cstdio>
using namespace std;
int main()
{
int i;
__int64 num[501];
num[0]=0;
num[1]=1;
num[2]=5;
for(i=3;i<501;i++)
{
if(0!=i%2)
num[i]=3*num[i-1]-3*num[i-2]+num[i-3]+1;
else
num[i]=3*num[i-1]-3*num[i-2]+num[i-3]+2;
}
int n;
while(cin>>n)
{
printf("%I64d\n", num[n+1]);
}
return 0;
}
RPhx
2004-04-25
打赏
举报
回复
用递推的方法很容易算出来的.
#include <iostream>
using namespace std;
int main()
{
int i,num[501];
num[0]=0;
num[1]=1;
num[2]=5;
for(i=3;i<501;i++)
{
if(0!=i%2)
num[i]=3*num[i-1]-3*num[i-2]+num[i-3]+1;
else
num[i]=3*num[i-1]-3*num[i-2]+num[i-3]+2;
}
int n;
while(cin>>n)
{
cout<<num[n+1]<<endl;
}
return 0;
}
Problem K:
三角形
数
博客围绕计算第k个
三角形
数
的
编程
问题展开。介绍了
三角形
数
概念,如1、3、6等可排成
三角形
的
数
。给出输入要求为若干正整
数
k(1<=k<=232)至EOF结束,需输出第k个
三角形
数
,还提及思路和答案但未详述。
GESP2025年6月认证C++二级( 第三部分
编程
题(1)
数
三角形
)
该博客围绕GESP2025年6月认证C++二级第三部分
编程
题“
数
三角形
”展开,给出了参考程序1和参考程序2,为学习C++
编程
以及备考GESP二级的人员提供了相关
编程
示例。
从GESP真题看
编程
思维培养:如何用C++解决
数
三角形
问题(含常见错误分析)
本文围绕CCF-GESP真题‘
数
三角形
’展开,重点讲解如何将
数
学条件(直角边≤n、面积为整
数
)转化为可计算模型;对比暴力枚举O(n²)与
数
学优化O(n)算法;剖析C++实现中整
数
溢出、边界处理及逻辑错误等典型缺陷;并强调
编程
思维核心——问题分解、多解对比与边界测试。
题解:学而思
编程
多约
数
的
三角形
数
等知名刷题平台精心挑选而来,并结合各平台提供的算法标签和难度等级进行了系统分类。题目涵盖了从基础到进阶的多种算法和
数
据结构,旨在为不同阶段的
编程
学习者提供一条清晰、平稳的学习提升路径。一个正整
数
,表示第一个拥有超过五百个约
数
的
三角形
数
。
三角形
数
可以由累加自然
数
来生成。第一个拥有超过五百个约
数
的
三角形
数
是多少?是第一个拥有超过五个约
数
的
三角形
数
。本文分享的必刷题目是从。
C语言打印
三角形
(菱形)、字符串逆序、水仙花
数
本文介绍了C语言
编程
中的四个经典习题:如何打印
三角形
和菱形图案,实现字符串逆序,以及找出0~100000间的水仙花
数
。通过示例代码展示了每种问题的解决方案,并给出了运行结果。
C语言
70,039
社区成员
243,246
社区内容
发帖
与我相关
我的任务
C语言
C语言相关问题讨论
复制链接
扫一扫
分享
社区描述
C语言相关问题讨论
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章