算法入门(一)

来源:互联网 发布:钱龙金典版软件 编辑:程序博客网 时间:2024/06/15 17:48

1.for循环的使用

其实简单的for(初始化;判断条件;调整)循环,一般都会用。

Tip:break用于跳出for循环,continue用于跳出此次循环,进入下一次;  for(;;)死循环

如:

int i,j=3,n=5;for(i=0;i<n;i++){     if(i>j)    {        break;     }}//循环结束时,i=4

Q1.求1000-9999中的aabb类型的完全平方数(即前两位相等,后两位也相等)

for(i=1;;i++){    if(i*i<1000)    {continue;}    if(i*i>9999)     {break;}    int x=i*i;    int m=x/100;    int n=x%100;    if(m%10==m/10&&m%10==n/10)    {          cout<<x<<endl;     }}


2.溢出问题

计算过程中或计算结果超过了规定的范围,就是溢出。(以前看题目都不太注意给定的条件,如a<=7,n<10^9。以后要多注意!)

Q2.输入n,求1-n的阶乘的和的末尾6位数

一般代码:

        int n,sum=0,i,j,f;cin>>n;for(i=1;i<=n;i++){f=1;for(j=1;j<=i;j++){f*=j;}sum+=f;}cout<<sum%MOD<<endl;return 0;
以上代码的计算过程中就会出现乘法溢出的问题,如果单独计算1-20的阶乘之和的结果都得不出正确结果

所以,在计算过程中就直接对每一个加数对MOD取余,可以得到正确结果。代码如下

int n,sum=0,i,j,f;cin>>n;for(i=1;i<=n;i++){f=1;for(j=1;j<=i;j++){f=f*j%MOD;                                         //每个加数都先进行取余操作}sum+=f;}cout<<sum%MOD<<endl;                                               //最后的结果也进行取余操作

3.文件操作

重定向:(个人理解:就是将输入的流的来源改变,从键盘读取改为文件读取)

                 freopen("input.txt","r",stdin);

                 freopen("output.txt","w",stdout);

(补充:)

C语言重定向:

        FILE *fin;                                         //需要关闭文件,fclose();FILE *fout;fin=fopen("in.txt","r");fout=fopen("out.txt","w");        fclose(fin);        fclose(fout);
C++重定向:

 streambuf *backup1,*backup2;ifstream fin;ofstream fout;fin.open("in.txt");fout.open("out.txt");backup1=cin.rdbuf();cin.rdbuf(fin.rdbuf());       
cout.rdbuf(fout.rdbuf());
cin.rbuf(fin.rdbuf);     //输入完成后写(最后一个cin后面)
cout.rdbuf(fout.rdbuf); //输出完成后写(最后一个cout后面)

input.txt需要自己定义,output.txt会在程序运行后产生,自己可以不建立。两个TXT文档都会出现在CPP所在的文件夹中。

int _tmain(int argc, _TCHAR* argv[]){freopen("input.txt","r",stdin);freopen("output.txt","w",stdout);int n,sum=0,i,j,f;cin>>n;for(i=1;i<=n;i++){f=1;for(j=1;j<=i;j++){f=f*j%MOD;}sum+=f;}cout<<sum%MOD<<endl;cout<<"Timed used:"<<clock()/CLOCKS_PER_SEC<<endl;return 0;}


                                             
0 0
原创粉丝点击
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 国家不承认学历怎么办 高考分数错了怎么办 签合同了不想干怎么办 贵港教育小学插班生怎么办 学校宿舍限瓦怎么办 苹果锁屏后wifi断开怎么办 兼职一天不给钱怎么办 五月孩子掉床怎么办 孩子五月份掉床怎么办 郑州怎么办暂住证凭条 郑州居住证凭条怎么办 宿舍虫子咬人怎么办 is语音注册频繁怎么办 苹果id注销了怎么办 网站突然打不开了怎么办 谷歌邮箱打不开怎么办 360借款无力承担怎么办 公司被收购期权怎么办 创业板连续亏损怎么办 国企合并后员工怎么办 资金密码忘记了怎么办? 大华电子秤称重不准怎么办 股票暂停上市散户怎么办 入股公司赔钱了怎么办 家里被虚报脱贫怎么办 技术入股想退股怎么办 想开店没有资金怎么办 想开店资金不够怎么办 要开店没资金怎么办 想开店缺少资金怎么办 刚刚开店没有资金怎么办 有专利没钱投资怎么办 肉牛养殖没资金怎么办 入股分红想撤资怎么办 入股后想退股怎么办 土地使用权到期后怎么办 员工辞职扣工资怎么办 公司老板要跑路不发工资怎么办 撤销撤多了怎么办 中葡股份跌停怎么办 厕所里有蟑螂怎么办