oj__小题B,C

来源:互联网 发布:网络实名制 郭德纲 编辑:程序博客网 时间:2022/10/05 07:05

题目描述:

小明今年3岁了,现在他已经能够认识100以内的非负整数,并且能够进行100以内的非负整数的加法计算.对于大于等于100的整数,小明仅保留该数的最后两位进行计算,如果计算结果大于等于100,那么小明也仅保留计算结果的最后两位.例如, 对于小明来说: 1) 123434是相等的 2) 35+80=15给定非负整数AB,你的任务是代表小明计算出A+B的值.

输入:

输入数据的第一行为一个正整数T,表示测试数据的组数. 然后是T组测试数据.每组测试数据包含两个非负整数AB(AB均在int型可表示的范围内).

输出:

对于每组测试数据, 输出小明A+B的结果

思路:因为小明只会对100以内的整数进行运算,所以可以先对A,B分别取余,计算A+B,再对结果取余,但因为A,B计算前是否取余对A+B的后两位结果没有影响,所以直接计算A+B,再对结果取余即可。

 

#include <iostream>

using namespace std;

int main()

{

          int n;

          cin>>n;      // 输入测试数据的组数

          for(int i=0;i<n;i++)              // for循环实现多组数据输入

          {

                   int sum=0,a,b;

                   cin>>a>>b;              //输入 A,B

                   sum = a + b ;

                   sum%=100;                       // 计算A+B,并对结果取余

                   cout<<sum<<endl;               //  输出结果

          }

          return 0;

 }

 

题目描述:

还记得中学时候学过的杨辉三角吗?具体的定义这里不再描述,你可以参考以下的图形: 

1 1 
1 2 1 
1 3 3 1 
1 4 6 4 1 
1 5 10 10 5 1 

输入:

输入数据包含多个测试实例,每个测试实例的输入只包含一个正整数n1=n=30),表示将要输出的杨辉三角的层数。

输出:

对应于每一个输入,请输出相应层数的杨辉三角,每一层的整数之间用一个空格隔开,每一个杨辉三角后面加一个空行。

思路:对于杨辉三角,每一行除了第一个和最后一个,其余的每个数都是其上一行同位置的数及前一个数的和,用一个二维数组po[a][b]表示杨辉三角的位置(a表示第几行,b表示第几个),则如果b不等于1并且不等于a,则po[a][b]=po[a-1][b]+po[a-1][b-1].如果b=1b=a,po[a][b]=1

#include <iostream>
using namespace std;
int po[31][31]; /* 定义二维数组,把数组定义成全局变量(数组会被初始化为0),当b=a时,po[a][b]=po[a-1][b]+po[a-1][b-1]成立*/
int main()
{
          int n;
          while(cin>>n)  // 输入杨辉三角的行数
          {         
             po[1][1]=1;
           for(int i=1;i<=n;i++)   //for循环输出
           {
                   for(int l=1;l<=i;l++)
                   {
                             if(l==1) po[i][l]=1;    // 第一列都是1
                          else po[i][l]=po[i-1][l-1]+po[i-1][l];// 计算每个位置的值
                       if(l==i) cout<<po[i][l]; 
                             else cout<<po[i][l]<<" "; //输出杨辉三角
                   }
                   cout<<endl;
          }
          cout<<endl;
}
          return 0;
}