如何解决C语言中求和超时的问题?

问题描述
求1+2+3+...+n的值。
输入格式
输入包括一个整数n。
输出格式
输出一行,包括一个整数,表示1+2+3+...+n的值。
数据规模与约定
1 <= n <= 1,000,000,000。
本题另一个要值得注意的地方是答案的大小不在你的语言默认的整型(int)范围内,
如果使用整型来保存结果,会导致结果错误。

    !使用循环和公式求法会导致运算超时(例如以下代码,超时),请问怎样解决此问题(提高运算效率)?要求用C/C++解决。
    #include<stdio.h>

int main()
{
long long n,i,sum=0;
scanf("%ld",&n);
for(i=1;i<=n;i++)
sum+=i;
printf("%ld\n",sum);
return 0;
}

c
0

1个回答

这个超时很好解决,把循环去掉,数学计算1加到n

结果为 n*(1+n)/2

3
qq_36390137
浮若星尘 long long 型?那是什么
2 年多之前 回复
caozhy
贵阳挖掘机马善福,自备车辆专业挖游泳池 +1
2 年多之前 回复
easylovecsdn
三更半夜听相声 嗯嗯,我又用求和公式试了一次,这回我用的long long型,输出格式用的%lld就对了,非常感谢!
2 年多之前 回复
easylovecsdn
三更半夜听相声 这是这个题的要求:时间限制:1.0s 内存限制:256.0MB
2 年多之前 回复
easylovecsdn
三更半夜听相声 这种球和公式的办法我试过了,最后判卷显示还是超时
2 年多之前 回复
Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
其他相关推荐
c语言中的超时机制
运行程序时,如果在一定时间内,程序中的一个功能还没有执行,此时,就要使用超时机制,跳出循环,报错或者终止程序执行。#include &amp;lt;stdio.h&amp;gt; #include &amp;lt;sys/time.h&amp;gt; void main() { float time_use=0; struct timeval start; struct timeval end;//struct tim...
c语言中的问题与解决
在学习c语言中会有很多的问题,我把我学习中遇到的一些小问题给大家分享一下,如果遇到相同的问题希望能有帮助。        第一个问题,在c语言中定义一个变量,如果定义的变量是在运行的程序后边,就会出现【d:\c编程\day02\day02\huanwei.c(10) : error C2143: 语法错误 : 缺少“;”(在“类型”的前面)】 举一个例子 #include int mai
在C语言中如何解决这种问题
fatal error C1083: Cannot open include file: 'public.h': No such file or directory
c语言中问题
我想知道用C语言如何实现char *strarray(char *strsrc,char *strdst)
c语言中的问题!
有以下程序:rnmain()rnrn int x=102,y=012;rn printf("%2d,%2d",x,y);rnrn请问输出结果y为什么是10而不是12?rn谢谢!!
C 语言中此问题如何解决
请看如下代码:rnrn#include rn#define FUNC_EXPORT __declspec( dllimport )rn#include "BaseHSM.h"rnrnrnrn__declspec( dllimport ) int WINAPI TASS_EncryptFile(char *inPath,char *outPath,char *keyFile);rn__declspec( dllimport ) int WINAPI TASS_DecryptFile(char *inPath,char *outPath,char *keyFile);rnrnvoid jmFile()rnrnint rv = 0;rn unsigned char keyBuf[3000],inData[3000],outData[3000],temp[3000];rn int keyLen,inLen,outLen,tempLen;rnrn unsigned char handle[20];rnrn //GetTransEncryptFilePath((char*)keyBuf);rnrn rv = FUNC_InitDevice();rn printf("设备初始化失败\n");rn if(rv != 0) rn return ; rn rn rnrn#if 1rnrnrnrn编译时出现如此错误请问如何解决呢?rnrnCompiling...rnjmFile.cpprne:\test\jmfile.cpp(7) : error C2146: syntax error : missing ';' before identifier 'TASS_EncryptFile'rne:\test\jmfile.cpp(7) : fatal error C1004: unexpected end of file foundrnError executing cl.exe.rnrntest.exe - 2 error(s), 0 warning(s)rnrn请各位大侠帮忙看一下是什么原因叫?rn
C语言中 && 的问题
int a=0x1000;rnbool b=a && (a-1);rnb的值是多少?为什么?
C语言中的问题
我在vc6中建立了一个工程,其中都是.c文件,编译时没有错误,能顺利运行,然后我又建立了一个MFC工程,我想把.c文件都加到MFC工程中,但是在编译的时候出现了以下的错误,请高手指导,应如何解决????? rn例如:int img_convert(AVPicture *dst, int dst_pix_fmt,const AVPicture *src, int pix_fmt,int width, int height);在avcodec.h中声明,函数体在imgconvert.v中int img_convert()略;在.cpp中调用此函数!!在此.cpp函数中已经引了avcodec.h头文件!!!编译时就出现了以下链接的错误!!rn是c,c++文件都有,MFC中的主函数是.cpp文件rnrnCompiling... rnSkipping... (no relevant changes detected) rnflvplayerDlg.cpp rnLinking... rnflvplayerDlg.obj : error LNK2001: unresolved external symbol "int __cdecl img_convert(struct AVPicture *,int,struct AVPicture const *,int,int,int)" (?img_convert@@YAHPAUAVPicture@@HPBU1@HHH@Z) rnflvplayerDlg.obj : error LNK2001: unresolved external symbol "int __cdecl avpicture_fill(struct AVPicture *,unsigned char *,int,int,int)" (?avpicture_fill@@YAHPAUAVPicture@@PAEHHH@Z) rnflvplayerDlg.obj : error LNK2001: unresolved external symbol "int __cdecl avpicture_get_size(int,int,int)" (?avpicture_get_size@@YAHHHH@Z) rnflvplayerDlg.obj : error LNK2001: unresolved external symbol "int __cdecl avcodec_decode_video(struct AVCodecContext *,struct AVFrame *,int *,unsigned char const *,int)" (?avcodec_decode_video@@YAHPAUAVCodecContext@@PAUAVFrame@@PAHPBEH@Z) rnflvplayerDlg.obj : error LNK2001: unresolved external symbol "int __cdecl avcodec_open(struct AVCodecContext *,struct AVCodec *)" (?avcodec_open@@YAHPAUAVCodecContext@@PAUAVCodec@@@Z) rnflvplayerDlg.obj : error LNK2001: unresolved external symbol "struct AVCodec * __cdecl avcodec_find_decoder(enum CodecID)" (?avcodec_find_decoder@@YAPAUAVCodec@@W4CodecID@@@Z) rn
C语言中: va_list 解决变参问题
VA_LIST 是在C语言中解决变参问题的一组宏,所在头文件:#include <stdarg.h>,用于获取不确定个数的参数 ——摘自百度百科 va_list 是一个字符指针,在代码中可以理解为指向当前参数的一个指针,这里有几个与 va_list 相关的常见的函数void va_start ( va_list ap, param ); //对va_list变量进行初始化,将ap指针指向参数列表
问题:C语言中的问题
#includernrnvoid main()rnrn FILE *fp;rn char ch,filename[100];rn scanf("%s",filename);rn if((fp = fopen(filename,"w")) == NULL)rn rn printf("cannot open file\n");rn exit(0);rn rn ch = getchar();rn while(ch != '#')rn rn fputc(ch,fp);rn putchar(ch);rn ch = getchar();rn rn fclose(fp);rnrn--------------------------------------------------rnhello,world.#rnhello,world.rn--------------------------------------------------rn问题:getchar不是输入单个字符么,应该每次只能输入一个字符啊?为什么可以输入字符串?并且可以完整输出?
C语言中如何获取系统时间?
1 使用time_t time( time_t * timer ) 精确到秒 函数名: time 头文件:time.h 函数原型:time_t time(time_t * timer) 功能: 获取当前的系统时间,返回的结果是一个time_t类型,其实就是一个大整数,其值表示从CUT(Coordinated Universal Time)时间1970年1月1日00:00:00(称为UNIX
C语言中如何打开文件?
在我的E盘跟目录下有一个a.txt,请问如何在程序中打开并读入其中的字符?rn是这样的吗?rnrn#include rnmain()rnrn FILE* f;rn if((f = fopen("E:\a.txt","r"))==NULL);rn rn printf(" it can not open the file\n");rn return;rn rnrnrn为甚我打不开文档呢?rn
c语言中如何清屏?
C语言中如何清屏?用什么命令。谢谢!
c语言中如何创建文件夹
呵呵,比较菜。望搞人指点一二。rn 同时也想知道 mfc中是否另有函数。rn谢谢
在C语言中如何连接数据库
请问在C中如何连接数据库?
在C语言中如何创建文件夹??
在C语言中如何创建文件夹??rn大家发表以下看法
C语言中如何获取时间
C语言的时间函数,使用这些函数时要加入头文件time.h 函数 说明 char *asctime(const struct tm *tm) 将时间日期以字符串格式表示 char *asctime_r(const struct tm *tm,char *buf) 将时间日期以字符串格式表示,加了缓冲器存放返回值 char *ctime(const time_t *timep)...
C语言中如何连接字符串??
LINE 1 char *Version, *Patchpath;rnLINE 2rnLINE 3 Version = "20050525"; rnLINE 4 Patchpath = Version+".Patch" 实现Patchpath = "20050525.Patch"; rnLINE 5 if((fp=fopen(Patchpath,"r"))==NULL)rnLINE 6 rnLINE 7
请教在C语言中如何终止一个超时的数据查询
最近遇到在生产中查询一个大范围内的大量数据时,由于耗时较长,进程一直被查询操作占用,导致后来的消息不能得到及时处理,在消息队列中堵塞大量消息。想要找个完善的解决方案,在设定的超时时间到后终止该查询。rn 之前使用了alarm时钟信号来进行捕获超时信号,捕获后使用了goto语句跳转并对数据库回滚,但是这种方法有时会导致进程与数据库断开连接,不知道是什么原因造成的。请有经验的大虾指点一二,感激不尽!
c语言中的输油管道问题
改进的可以在C语言环境下实现的算法,可能还有许多需要改进的地方。
C语言中scanf问题
scanf
C语言中换行符问题
在缓冲输入中,换行符的确是个麻烦的问题,在这里做一个总结。 1.getchar() 记住:getchar()函数读取每一个字符!每一个!包括空格,制表符和换行符。 错误代码: while(getchar()!='y') printf("Well,then it is %d?\n",++guess); 这里会出现输入一个n,但是出现两句“Well……” 原因是因为换行符也被传输进去了。
C语言中函数传参问题
 学过c语言的都知道c语言的swap函数交换操作,那也是最早的有关函数形参和实参的介绍,以及指针的引入。 #include&amp;lt;stdio.h&amp;gt; void swap(int a,int b) { printf(&quot;a的内存%p,a的地址是%p\nb的内存%p,b的地址是%p\n&quot;,a,&amp;amp;a,b,&amp;amp;b); } int main() { int *pa,*pb; int...
C语言中的大数相乘问题
Example: 11111111111111111111111 * 1111111111111111111111 = ? char *str1 = (char *)malloc(sizeof(char) * 100); char *str2 = (char *)malloc(sizeof(char)* 100); scanf("%s%s", str1, str2);
C语言中的移位问题
如果对于一个无符号数x,如果将它所有的位右移移出的话,是不是应该为0阿?但是我在gcc下测试了一下,结果为0xffffffffrn这是为什么阿?
C语言中图像函数的问题.
我在编c语言图像函数的时候,单独调用我编的图像函数好使.但是跟我的程序结合的时候就出现了问题,显示为ERROR:Type mismatch in redeclaration of 'graphic'rn有人说这是图形函数没有初始化,但是我已经初始化了,而且单独运行这个图形函数还好使.不知道怎么办,非常着急.在线等.明天就要交了.希望大家多指点.多谢!!!
C语言中声音问题
C语言中的一段代码只能使主板喇叭发声,不能从耳机里听到声音,谁能帮我解决rn附代码:rnrnrn#includern#includern#includern#includern#includernvoid interrupt(* handler)( );rnint handle,control;rnenum NOTESrnrn C10=131,D10=147,E10=165,F10=175,G10=196,A10=220,B10=247,rn C0=262, D0=296, E0=330, F0=349, G0=392, A0=440, B0=494,rn C1=523, D1=587, E1=659, F1=698, G1=784, A1=880, B1=988,rn C2=1047, D2=1175, E2=1319, F2=1397, G2=1568, A2=1760, B2=1796rnsong[]=rn E1,16,E1,8,E1,8,F1,16,G1,16,F1,16,F1,16,E1,16,D1,rn 16,C1,16,C1,16,D1,16,E1,16,E1,16,D1,16,D1,16,E1,16,rn E1,8,E1,8,F1,16,G1,16,G1,16,F1,16,E1,16,D1,16,C1,rn 16,C1,16,D1,16,E1,16,D1,16,D1,16,C1,16,D1,16,D1,8,rn D1,8,E1,16,C1,16,D1,16,E1,8,F1,8,E1,16,C1,16,D1,rn 16,E1,8,F1,8,E1,16,C1,16,C1,16,D1,16,G0,16,E1,16,rn E1,16,E1,8,F1,16,G1,16,G1,16,F1,16,E1,16,D1,16,C1,rn 16,C1,16,D1,16,E1,16,E1,16,D1,16,C1,16,D1,16,rn 0,0;rnvoid interrupt music()rnrn static int flag=0,note=0,fre,dur=8;rn flag++;rn fre=song[note];rn dur=song[note+1];rn if(fre)rn rn flag=0;rn /*打开计数器*/rn outportb(0x43,0xb6);rn /*计算频率*/rn fre=(unsigned)(1193180L/fre); rn /*将频率写入计时器*/rn outportb(0x42,(char)fre); rn outportb(0x42,(char)(fre>>8));rn /*从扬声器端口读出控制信息*/rn control=inportb(0x61);rn /*写入扬声器,使之发声*/rn outportb(0x61,(control)|0x3); rn note=note+2;rn if(note>=134)note=0;rn rnrnvoid main()rnrn int gdriver=DETECT,gmode,i,j;rn initgraph (&gdriver,&gmode,"e:\\tc");rn while(!kbhit())rn rn /*获取0x1c中断向量*/rn handler=getvect(0x1c); rn /*将music函数写入到0x1c中断向量中去*/rn setvect(0x1c,music); rn /*清除屏幕*/rn cleardevice( ); rn /*将背景色设置成黑色*/rn setbkcolor(BLACK); rn for(i=0;i<300;i++)rn rn j=i%30;rn /*前景色设置*/rn setcolor(j/2);rn /*画圆*/rn circle(320,240,(j+1)*5); rn if(j==0)cleardevice( ); rn delay(100);rn rn rn /*关闭PC扬声器*/rn outportb(0x61,control&0xfe); rn /*将0x1c中断向量置成系统原有的处理例程*/rn setvect(0x1c,handler); rn getch();rn cleardevice();rn closegraph();rnrnrnrnZ
c语言中的自增问题
# include "stdio.h"rn void main( )rn int i,k;rnrn i=3;rn k=(++i)+(++i)+(++i);rn printf("i=%d\tk=%d\n",i,k);rn Zrn为什么结果是i=6 k=16???
c语言中函数调用问题
char fun(char *);rnmain()rnrnchar *s="one";a[5]=0,(*f1)()=fun,ch;rn......rnrn选择题:对函数fun的正确调用语句是:答案是: (*f1)(a);rn请高手分析,我觉得应该是 ch=*f1(s); rn
C语言中的结构问题
定义了一个结构rnstructrnrn...rnstr;rn有一个函数用这个结构str作参数rnvoid F(struct *s,int n)rnrn...rnrn在int main()函数使用前声明了:rnvoid F(struct*,int);rnTC2.0报Structure or union syntax errorrnrn请问,这里错的是哪里。再顺便讲解下用结构作函数参数的问题。rn谢谢
c语言中的读取文件问题
生成100个随机数,并用fprintf(fp,"%d\t",record[i]);写入一个文件中。请问怎样才能正确读取这个文件中的数,我用fscanf(fp,"%d\t",&record[i]);并不能正确读取,好象是我读'\t'时出问题。请问怎样解决?
C语言中字符串的问题
在C语言中,用户输入一个字符串,如何统计字符串中每个字符出现的次数?rn如:字符串"abac" 统计每个字符出现的次数 a:2 b:1 c:1
C语言中输入缓冲区问题
int main()rnrn int *data = NULL,*data2,length;rn scanf("%d",&length);//线性表长度rn data = (int *)malloc(length*sizeof(int));rn for(int i = 0;i < length; ++i)rn rn scanf("%d ",&data[i]);//输入内容rn rn------------------------------------------------------rn data2 = (int *)malloc(length*sizeof(int));rn mergesort(data,data2,0,length - 1);rn for(int i = 0;i < length;i ++)rn printf("%d\n",data[i]);rn return 0;rnrnrn如上代码,我在输入rn3rn2 3 1回车rnrn这个时候,闪烁光标就会定到那儿,知道我任意输入一些东西时,才继续执行分割线下的代码,加getchar()也不顶用。
C语言中字符数组的问题
#includernvoid main()rnrn char c[5]='c','h','i','n','a';rn char b[6]='c','h','i','n','a';rn puts(c);rn puts(b);rnrnrnrn[img=https://img-bbs.csdn.net/upload/201305/25/1369449068_506768.jpg][/img]rnrnrnrn定义的字符数组大于实际字符长度时,系统自动在末尾加上'\0',故puts(b)为china;rn但为什么定义字符数组等于实际字符长度时,会在末尾多出一些乱码呢,数组c的长度不是5吗?
C语言中的switch问题
[code=c]printf("\n请选择药品类型(0:感冒药,1:胃药,2:消炎药,3:眼药水):");rn scanf("%c",&k);rn switch (k)rn rn case 0: medicine.type=pill_for_cold;break;rn case 1: medicine.type=stomachace_medicine;break;rn case 2: medicine.type=antiphlogistic_drug;break;rn case 3: medicine.type=eyedrop;[/code]rn这个switch语句无法运行是什么原因rn这个是根据这个来写的rn[code=c]enum ttype pill_for_cold,stomachace_medicine,antiphlogistic_drug,eyedrop;rn[/code]rn也就是说,我想通过一个switch语句来做一个选单
c语言中的指针问题
int *a,*b;rnrn*a=3;rnb=a;rn请问这样的语句对吗?
C语言中“|”符号的问题
程序开头有这样的定义:rn/*the fixed colors*/rn#define BLACK 0rn#define YELLOW(RED | GREEN)rn#define MAGENTA(RED | BLUE)rn#define CYAN(GREEN | BLUE)rn#define WHITE(RED | GREEN | BLUE)rn运行的时候提示错误是这样的:rntest.crnC:\Documents and Settings\Administrator\test.c(15) : error C2010: '|' : unexpected in macro formal parameter listrnC:\Documents and Settings\Administrator\test.c(15) : error C2010: 'G' : unexpected in macro formal parameter listrnC:\Documents and Settings\Administrator\test.c(16) : error C2010: '|' : unexpected in macro formal parameter listrnC:\Documents and Settings\Administrator\test.c(16) : error C2010: 'B' : unexpected in macro formal parameter listrnC:\Documents and Settings\Administrator\test.c(17) : error C2010: '|' : unexpected in macro formal parameter listrnC:\Documents and Settings\Administrator\test.c(17) : error C2010: 'B' : unexpected in macro formal parameter listrnC:\Documents and Settings\Administrator\test.c(18) : error C2010: '|' : unexpected in macro formal parameter listrnC:\Documents and Settings\Administrator\test.c(18) : error C2010: 'G' : unexpected in macro formal parameter listrnC:\Documents and Settings\Administrator\test.c(18) : error C2010: '|' : unexpected in macro formal parameter listrnC:\Documents and Settings\Administrator\test.c(18) : error C2010: 'B' : unexpected in macro formal parameter listrnC:\Documents and Settings\Administrator\test.c(35) : error C2065: 'YELLOW' : undeclared identifierrnC:\Documents and Settings\Administrator\test.c(41) : error C2065: 'WHITE' : undeclared identifierrnC:\Documents and Settings\Administrator\test.c(42) : error C2065: 'MAGENTA' : undeclared identifierrn执行 cl.exe 时出错.rnrn请问大家这个是什么问题?我用的是VC++6.0编译环境!谢谢!
C语言中的文件读取问题
void score_read()rnrn FILE *f;rn char num[10];rn char name[20];rn int p,l,e,j,sum;rn rn if (count==0)rn rn printf("\n该学生成绩表目前记录为空,无法进行读取!\n");rn printf("\n");rn rn elsern rn f=fopen("student.txt","r");rn if (f==NULL)rn rn printf("无法打开来该文件!\n");rn exit(0);rn rn while (! feof(f))rn rn fscanf(f,"%s%s%d%d%d%d%d",num,name,&p,&l,&e,&j,&sum);rn printf("%s\t%s\t%d\t%d\t%d\t%d\t%d\n",num,name,p,l,e,j,sum);rn rn ;rn if(fclose(f))rn rn printf("无法关闭此文件!\n");rn exit(0);rn rn rn rn这一段程序进行运行的结果为:rn11 ss 77 88 99 66 330rn22 yy 77 88 99 90 354rn22 yy 77 88 99 90 354rnrn但我文件的内容只有rn11 ss 77 88 99 66 330rn22 yy 77 88 99 90 354rn多出了一行,请问究竟在哪里出错了呢?rnrnrnrn
C语言中的指针问题
学C最蛋疼的就是碰上指针了,有没有只讲指针的书啊,要很详细的那种。
C语言中 数据类型的问题
unsigned int b=0;n b=b-1;n printf("b=%d\n",b);n n unsigned char c=0;n c=c-1;n printf("c=%d\n",c);n n 为什么b=-1;c=255; ?n 据我理解,计算机b,c在内存中应该都是全1.并且输出格式都是%d都有符号,所以n 1111111.。。都应该表示为-1,为什么c是255??
相关热词 c#异步发送kafka c#窗体编号 c# 操作二进制文件 c# 反射 机制 c#线程 窗体失去响应 c#角度转弧度 c# 解析gps数据 c# vs设置 语法版本 c# json含回车 c#多线程demo