2019-08-08(甲级3题)

1009 Product of Polynomials (25 分)

这道题是1002的升级版,求多项式A*B,其实都异曲同工,将多项式A保存在数组a中,然后B中每输入一项,就跟多项式A相乘,结果累加到数组b中,逆序输出即可。

1108 Finding Average (20 分)

输入一些字符串,逐个判断是否符合条件,并将符合条件的字符串([-1000,1000]的最多含2位小数的数字)累加求平均值。
这道题的坑在: 当只有一个值的时候,numbers要改为number,而输出照样是保留2位小数
代码如下:

#include 
#include 
#include 
using namespace std;

int main(){
    int n,cnt=0;
    float total=0;
    string now;
    cin>>n;
    for(int i=0;i>s;
        int len=s.length();
        //flag=1为符合,flag=0为不符合;sign记录负号;遇到小数点后digit++
        int flag=1,sign=0,digit=-1;
        float sum=0;
        for(int j=0;j='0'&&s[j]<='9'))){
                flag=0;
                break;
            }
            if(j==0&&s[j]=='-')sign=1;
            else if(s[j]=='.')digit++;
            else if(digit>=0&&digit<2){
                if(digit==0)sum+=(s[j]-'0')*0.1;
                else if(digit==1)sum+=(s[j]-'0')*0.01;
                digit++;
            }
            else if(digit>=2){
                flag=0;
                break;
            }
            else{
                sum=sum*10+(s[j]-'0');
            }
        }
        if(flag){
            if(sum>1000||sum<-1000){//sum
                cout<<"ERROR: "<=1){
        printf("The average of %d numbers is %.2f",cnt,total/cnt);
    }
    else{
        cout<<"The average of 0 numbers is Undefined";
    }
    return 0;
}

1148 Werewolf - Simple Version (20 分)

万恶的狼人杀!
其实这道题不难,真的不难,去年考乙级做的时候,一心只想着用i和j去假设说假话的人,但其实这样是没办法做的,因为有些人没办法确定是狼人还是好人(没被提及),而且有些人可能被重复提及。换一种思路,若反过来,我们用i和j去假设是狼人,那么剩下的就是好人了,把所有人说的话都遍历一遍,如果结果刚好符合条件,就直接输出并return,否则就是没找到符合的结果,输出没有解。
代码如下:(简单得一匹)

#include 
#include 
using namespace std;

int main(){
    int n,tell[105],a[105]={0},lie[105]={0};
    cin>>n;
    for(int i=1;i<=n;i++){
        cin>>tell[i];
    }
    //假设i和j是狼人
    for(int i=1;i0&&(tell[k]==i||tell[k]==j))lie[k]=1;
            }
            //cnt统计说谎人数,wolf统计说谎狼人数
            int cnt=0,wolf=0;
            for(int k=1;k<=n;k++){
                //如果第k个人说谎了,那cnt++
                if(lie[k]==1)cnt++;
                //如果第k个人说谎了并且是狼人,那wolf++
                if(lie[k]==1&&(k==i||k==j))wolf++;
            }
            //如果说谎人数统计为2个,说谎的狼人统计为1个,那么就可以直接输出结果了。
            if(cnt==2&&wolf==1){
                cout<

你可能感兴趣的:(2019-08-08(甲级3题))