zoukankan      html  css  js  c++  java
  • PTA【复数相乘】

    队友在比赛时A掉的。吊吊吊!!!
    主要考虑这些情况吧|||
    案例:

    /*
    3i i
    -3 i
    -1-i 1+i
    i 1
    -1-i -1-i
    */
    -3
    -3i
    -2i
    i
    2i
    #include <stdio.h>
    #include <math.h>
    #include <string.h>
    #include <algorithm>
    #include <iostream>
    #include <queue>
    using namespace std;
    #define MAX 1010
    #define INF 0x3f3f3f
    int n,m;
    int sum1,sum2;
    void display(int a,int b,int c,int d)
    {
        sum1=a*c-b*d;
        sum2=a*d+b*c;
    //  printf("%d %d %d %d
    ",a,b,c,d);
    }
    int main()
    {
        while(1)
        {
            int i,j,k,t;
            char s1[MAX],s2[MAX];
            int a,b,c,d;
            a=b=c=d=0;
            scanf("%s%s",s1,s2);
            int n1=strlen(s1);
            int n2=strlen(s2);
            int f1=0,f2=0;
            for(i=0;i<n1;i++)
            {
                if(s1[i]=='i')
                    f1=1;
            }
            if(f1)
            {
                int cont=0;
                for(i=0;i<n1;i++)
                {
                    if(s1[i]=='-'||s1[i]=='+')
                        cont++;
                }
                if(cont==0)
                {
                    for(i=0;i<n1-1;i++)
                        b=b*10+s1[i]-'0';
                    if(n1==1)
                        b=1;
                }
                if(cont==2)
                {
                    for(i=1;i<n1-1;i++)
                    {
                        if(s1[i]=='-'||s1[i]=='+')
                            break;
                        a=a*10+s1[i]-'0';
                    }
                    a=-a;
                    k=i;
                    for(++i;i<n1-1;i++)
                    {
                        b=b*10+s1[i]-'0';
                    }
                    if(n1-k==2)
                        b=1;
            //      printf("%d
    ",k);
                    if(s1[k]=='-')
                        b=-b;
                }
                if(cont==1)
                {
                    if(s1[0]=='-')
                    {
                        for(i=1;i<n1-1;i++)
                            b=b*10+s1[i]-'0';
                        b=-b;
                        if(n1==2)
                            b=-1;
                    }
                    else
                    {
                        for(i=0;i<n1;i++)
                        {
                            if(s1[i]=='-'||s1[i]=='+')
                                break;
                            a=a*10+s1[i]-'0';
                        }
                        k=i;
                        for(++i;i<n1-1;i++)
                        {
                            b=b*10+s1[i]-'0';
                        }
                        if(n1-k==2)
                            b=1;
                        if(s1[k]=='-')
                            b=-b;
                    }
                }
            }
            else
            {
                if(n1==1)
                    a=s1[0]-'0';
                else if(s1[0]=='-')
                {
                    for(i=1;i<n1;i++)
                        a=a*10+s1[i]-'0';
                    a=-a;
                }
                else
                {
                    for(i=1;i<n1;i++)
                        a=a*10+s1[i]-'0';
                }
                b=0;    
            }
            for(i=0;i<n2;i++)
            {
                if(s2[i]=='i')
                    f2=1;
            }
            if(f2)
            {
                int cont=0;
                for(i=0;i<n2;i++)
                {
                    if(s2[i]=='-'||s2[i]=='+')
                        cont++;
                }
                if(cont==0)
                {
                    for(i=0;i<n2-1;i++)
                        d=d*10+s2[i]-'0';
                    if(n2==1)
                        d=1;
                }
                if(cont==2)
                {
                    for(i=1;i<n2;i++)
                    {
                        if(s2[i]=='-'||s2[i]=='+')
                            break;
                        c=c*10+s2[i]-'0';
                    }
                    c=-c;
                    k=i;
                    for(++i;i<n2-1;i++)
                    {
                        d=d*10+s2[i]-'0';
                    }
                    if(n2-k==2)
                        d=1;
                    if(s2[k]=='-')
                        d=-d;
                }
                if(cont==1)
                {
                    if(s2[0]=='-')
                    {
                        for(i=1;i<n2-1;i++)
                            d=d*10+s2[i]-'0';
                        d=-d;
                        if(n2==2)
                            d=-1;
                    }
                    else
                    {
                        for(i=0;i<n2;i++)
                        {
                            if(s2[i]=='-'||s2[i]=='+')
                                break;
                            c=c*10+s2[i]-'0';
                        }
                        k=i;
                        for(++i;i<n2-1;i++)
                        {
                            d=d*10+s2[i]-'0';
                        }
                        if(n2-k==2)
                            d=1;
                        if(s2[k]=='-')
                            d=-d;
                    }
                }
            }
            else
            {
                if(n2==1)
                    c=s2[0]-'0';
                else if(s2[0]=='-')
                {
                    for(i=1;i<n2;i++)
                        c=c*10+s2[i]-'0';
                    c=-c;
                }
                else
                {
                    for(i=1;i<n2;i++)
                        c=c*10+s2[i]-'0';
                }
                d=0;    
            }
            display(a,b,c,d);
            if(sum1==0&&sum2==0)
                printf("0
    ");
            else if(sum1==0&&sum2!=0)
            {
                if(sum2==1)
                    printf("i
    ");
                else if(sum2==-1)
                    printf("-i
    ");
                else
                    printf("%di
    ",sum2);
            }
            else if(sum1!=0&&sum2==0)
                printf("%d
    ",sum1);
            else if(sum1!=0&&sum2!=0)
            {
                if(sum2>0)
                {
                    if(sum2!=1)
                        printf("%d+%di
    ",sum1,sum2);
                    else 
                        printf("%d+i
    ",sum1);
                }
                else
                {
                    if(sum2!=-1)
                        printf("%d%di
    ",sum1,sum2);
                    else
                        printf("%d-i
    ",sum1);
                }
            }
        }
        return 0;
    }
    
  • 相关阅读:
    概率论与数理统计(3)
    平衡二叉树(AVL)实现(3)删除
    平衡二叉树(AVL)实现(1)
    利用C#2005实现数据表的基本操作
    用js计算时间差,得到比较人性化的结果
    WinForm 窗口最小化到托盘 notifyIcon
    wget 使用技巧
    使用javascript从url获取参数值
    OWC做电子表格和图表的试验
    C#中combobox 和TreeView控件属性、事件、方法收集
  • 原文地址:https://www.cnblogs.com/keyboarder-zsq/p/5934448.html
Copyright © 2011-2022 走看看