华师一附中OI组

标题: 基础循环训练题 [打印本页]

作者: admin    时间: 2018-4-21 12:03
标题: 基础循环训练题
一、计数循环   注意找如下数列的规律和地推关系,求出每个数列前10项。(至于求和,就只要改进一点点了)这主要是考大家找规律的水平
1、1 2 3 4 5 6 7 8 9 10
2、1 2 4 8 16 32
3、1 3 5 7 9
4、1 10 100 1000 10000
5、1 11 111 1111 11111
6、1 12 123 1234 12345
7、10 9 8 7 6 5
8、1 1/2 1/3 1/4 1/5
9、1 4 9 16 25
10、1 2 4 7 11 16
11、1! 2! 3! 4!
12、1! 3! 5! 7!
13、 1 -1  1 -1 1 -1 1 -1
14、1 -2  3 -4 5 -6
15、1 1 2 3 5 8

二、条件判断 主要训练终止条件的书写能力
1、判断数字的位数
2、判断回文数
3、比x大的最小完全平方数
4、不大于x的最大完全平方数
5、判断质数
6、辗转相除求最大公约数

三、循环判断(穷举法)
1、明7暗7
2、韩信点兵
3、10个数中最大数
4、约数个数
5、含有2的数

四、多重循环
1、百鸡问题
2、水仙花数
3、勾股数


注意
1、第N项  (计数条件)
2、小于x的最大数
3、大于x的最小数









作者: admin    时间: 2018-4-21 17:24
canton数  二阶等差数列  数金币
作者: admin    时间: 2018-7-8 17:09
经典训练题
1、cantor表
2、回文日期
3、金币
4、地雷
作者: admin    时间: 2018-7-10 20:55
  1. #include<iostream>
  2. using namespace std;
  3. int a,i,s;
  4. int main()
  5. {
  6.     cout<<"\n====T1=======\n";
  7.     s=0;
  8.     for (i=1; i<=10; i++)
  9.     {
  10.         a=i;
  11.         s=s+a;
  12.     }
  13.     cout<<s;
  14.     cout<<"\n====T2=======\n";
  15.     s=a=1;
  16.     for (i=2; i<=10; i++)
  17.     {
  18.         a=a*2;
  19.         s=s+a;
  20.     }
  21.     cout<<s;
  22.     cout<<"\n====T3=======\n";
  23.     s=0;
  24.     for (i=1; i<=10; i++)
  25.     {
  26.         a=2*i-1;
  27.         s=s+a;
  28.     }
  29.     cout<<s;
  30.     cout<<"\n====T4=======\n";
  31.     s=a=1;
  32.     for (i=2; i<=10; i++)
  33.     {
  34.         a=a*10;
  35.         s=s+a;
  36.     }
  37.     cout<<s;
  38.     cout<<"\n====T5=======\n";
  39.     s=a=1;
  40.     for (i=2; i<=10; i++)
  41.     {
  42.         a=a*10+1;
  43.         s=s+a;
  44.     }
  45.     cout<<s;

  46.     cout<<"\n====T6=======\n";
  47.     s=a=1;
  48.     for (i=2; i<=10; i++)
  49.     {
  50.         a=a*10+i;
  51.         s=s+a;
  52.     }
  53.     cout<<s;
  54.     cout<<"\n====T7=======\n";
  55.     s=0;
  56.     for (i=10; i>=1; i--)
  57.     {
  58.         a=i;
  59.         s=s+a;
  60.     }
  61.     cout<<s;
  62.     cout<<"\n====T7-2=======\n";
  63.     s=0;
  64.     for (i=1; i<=10; i++)
  65.     {
  66.         a=11-i;
  67.         s=s+a;
  68.     }
  69.     cout<<s;

  70.     cout<<"\n====T10=======\n";
  71.     s=a=1;
  72.     for (i=2; i<=10; i++)
  73.     {
  74.         a=a+(i-1);
  75.         s=s+a;
  76.     }
  77.     cout<<s;
  78.      cout<<"\n====T11=======\n";
  79.     s=a=1;
  80.     for (i=2; i<=10; i++)
  81.     {
  82.         a=a*i;
  83.         s=s+a;
  84.     }
  85.     cout<<s;
  86.       cout<<"\n====T12=======\n";
  87.     s=a=1;
  88.     for (i=2; i<=10; i++)
  89.     {
  90.         a=a*(2*i-2)*(2*i-1);
  91.         s=s+a;
  92.     }
  93.     cout<<s;
  94. }
复制代码

作者: JASONZHU    时间: 2018-7-10 23:07
已阅已阅

作者: 郑子川    时间: 2018-7-15 22:09
本帖最后由 郑子川 于 2018-7-16 14:44 编辑
  1. <div class="blockcode"><blockquote>#include <iostream>
  2. using namespace std;
  3. int a,b,c;
  4. float d;
  5. int main()
  6. {
  7.     cout<<"/////////6/////////"<<endl;
  8.     b=a=1;
  9.     for (c=2; c<=10; c++)
  10.     {
  11.         a=a*10+c;
  12.         b=b+a;
  13.     }
  14.     cout<<b;
  15.     cout<<endl<<"/////////7/////////"<<endl;
  16.     b=a=0;
  17.     for (c=10; c>=1; c--)
  18.     {
  19.         b=c;
  20.         a=b+a;
  21.     }
  22.     cout<<a;
  23.     return 0;
  24. }
复制代码


作者: 郑子川    时间: 2018-7-15 22:11
  1. #include <iostream>
  2. using namespace std;
  3. int a,b,c;
  4. float d;
  5. cout<<endl<<"/////////8/////////"<<endl;
  6.     for(c=1; c<=10; c++)
  7.     {
  8.         d=d+1.0/c;
  9.     }
  10.     cout<<d;
  11.     cout<<endl<<"/////////9/////////"<<endl;
  12.     a=b=0;
  13.     for(c=1; c<=20; c++)
  14.     {
  15.         b=c;
  16.         a=a+b*b;
  17.     }
  18.     cout<<a;
  19.     cout<<endl<<"/////////10/////////"<<endl;
  20.     b=a=1;
  21.     for (c=2; c<=10; c++)
  22.     {
  23.         a=a+(c-1);
  24.         b=b+a;
  25.     }
  26.     cout<<b;
  27.     return 0;
  28. }
复制代码

作者: 郑子川    时间: 2018-7-16 15:26
  1. #include <iostream>
  2. using namespace std;
  3. int a,b,c;
  4. int main()
  5. {
  6.     cout<<"/////////11/////////"<<endl;
  7.     a=b=1;
  8.     for(c=2; c<=10; c++)
  9.     {
  10.         b=b*c;
  11.         a=a+b;
  12.     }
  13.     cout<<a;
  14.     cout<<endl<<"/////////12/////////"<<endl;
  15.     b=a=1;
  16.     for (c=2; c<=7; c++)
  17.     {
  18.         a=a*(2*c-2)*(2*c-1);
  19.         b=b+a;
  20.     }
  21.     cout<<b;
  22.     return 0;
  23. }
复制代码

作者: JASONZHU    时间: 2018-7-16 22:22
数字位数
  1. #include <iostream>
  2. using namespace std;
  3. int a,b;
  4. int main()
  5. {
  6. cout<<"\n========weishu========\n";//位数
  7.     cin>>a;
  8.     while (a>0)
  9.     {
  10.         a=a/10;
  11.         b++;
  12.     }
  13.     cout<<b;
  14. return 0;
  15. }

复制代码

作者: JASONZHU    时间: 2018-7-16 22:24
质数(素数)
  1. #include <iostream>
  2. #include <cmath>
  3. using namespace std;
  4. int a,x;
  5. bool b;
  6. int main()
  7. {
  8.     cout<<"\n========zhishu========\n";//质数
  9.     cin>>x;
  10.     b=true;a=2;//有弊端:不能判断1,0!
  11.         while(a<=sqrt(x) && b)
  12.     {
  13.         if(x%a==0) b=false;
  14.         else a++;
  15.     }
  16.     if(b)cout<<"YES";
  17.     else cout<<"NO";
  18.     return 0;
  19. }
复制代码

作者: JASONZHU    时间: 2018-7-16 22:57
最大公因数(辗转相除法)
  1. #include<iostream>
  2. using namespace std;
  3. int a,b,s;
  4. int main()
  5. {
  6.     cin>>a>>b;
  7.     s=a%b;
  8.     while(s!=0)
  9.     {
  10.         a=b;
  11.         b=s;
  12.         s=a%b;
  13.     }
  14.     cout<<b;
  15.     return 0;
  16. }
复制代码

作者: JASONZHU    时间: 2018-7-18 23:16
水仙花数:way1 与 way2
  1. #include<iostream>
  2. using namespace std;
  3. int a,b,c,n;
  4. int main()
  5. {
  6.     cout<<"======way 1======"<<endl;
  7.     for(n=100; n<=999; n++)
  8.     {
  9.         a=n/100%10;
  10.         b=n/10%10;
  11.         c=n/1%10;
  12.         if(a*a*a+b*b*b+c*c*c==n)
  13.             cout<<n<<" ";
  14.     }
  15.     cout<<endl<<"======way2======"<<endl;
  16.     int abc;
  17.     for(a=1; a<=9; a++)
  18.         for(b=0; b<=9; b++)
  19.             for(c=0; c<=9; c++)
  20.                 if(a*a*a+b*b*b+c*c*c==a*100+b*10+c)
  21.                     cout<<a<<b<<c<<" ";
  22. }
复制代码

作者: JASONZHU    时间: 2018-7-22 22:47
100!末尾一共有几个“0”?
  1. #include<iostream>
  2. using namespace std;
  3. int s,i,a;
  4. int main()
  5. {
  6.    while(a<100)
  7.    {
  8.      if(a%5==0 && a%25!=0) s=s+1;
  9.      {
  10.          if(a%25==0 && a%125!=0) s=s+2;
  11.      }
  12.      a++;
  13.    }
  14.    cout<<s;
  15.     return 0;
  16. }

复制代码

作者: admin    时间: 2018-7-24 19:41
  1. #include <iostream>
  2. using namespace std;
  3. int a,b,c,i,s;
  4. int main()
  5. {
  6.     cout<<"\n=========T13=======\n";
  7.     a=b=1;
  8.     for (i=3; i<=10; i++)
  9.     {
  10.         c=a+b;
  11.         cout<<c<<' ';
  12.         a=b;
  13.         b=c;
  14.     }
  15.     cout<<"\n=========T14=======\n";
  16.     a=-1;
  17.     for (i=1; i<=10; i++)
  18.     {
  19.         a=a*(-1);
  20.         s=a*i;
  21.         cout<<s<<' ';
  22.     }
  23.     cout<<"\n=========T15=======\n";
  24.     for (char ch='A'; ch<='Z'; ch++) cout<<ch<<' ';
  25. }

复制代码

作者: admin    时间: 2018-7-24 19:46
判断位数
  1. #include <iostream>
  2. using namespace std;
  3. int a,b,c,i,x;
  4. int main()
  5. {
  6.     cin>>x;
  7.     k=0;
  8.     while (x>0)
  9.     {
  10.         x=x/10;
  11.         k++;
  12.     }
  13.     cout<<k;
  14.     return 0;
  15. }

复制代码

作者: admin    时间: 2018-7-24 19:59
数字颠倒,123变成321
  1. #include <iostream>
  2. using namespace std;
  3. int x,y,k;
  4. int main()
  5. {
  6.     cin>>x;y=0;
  7.     while (x>0)
  8.     {
  9.         k=x%10;  ///砍下屁股
  10.         x=x/10;  ///留下的一截
  11.         y=y*10+k; ///加在y的屁股后面
  12.     }
  13.     cout<<y;
  14.     return 0;
  15. }
复制代码

作者: admin    时间: 2018-7-24 20:26
质数判断
  1. #include <iostream>
  2. using namespace std;
  3. int x,i;
  4. bool b;
  5. int main()
  6. {
  7.     cin>>x;
  8.     i=2;///从2开始
  9.     b=1; ///假设是质数
  10.     while (i*i<=x && b)   ///平方根 和 尚未确定 2个条件
  11.         if (x%i==0) b=0;  ///确定不是质数
  12.         else i++;  ///试下一个
  13.     cout<<b;
  14.     return 0;
  15. }

复制代码





欢迎光临 华师一附中OI组 (http://hsyit.cn/) Powered by Discuz! X3.2