2013年11月7日 星期四

[ZJ] a819: 101學年度桃竹苗區資訊學科能力競賽 2.小三資優數學


#include<stdio.h>
#include<iostream>
using namespace std;
int a,b,c,l,n,k;
char s[15];
int main(){
    int i,j;
    scanf("%d%s%d",&l,s,&k);
    sscanf(s,"%d",&n);
    if(n==k) printf("%d\n",k);
    string r;
    for(i=0;i<l-1;i++){
        r+=s[i];
        sscanf(r.c_str(),"%d",&a);
        sscanf(&s[i+1],"%d",&b);
        if(a+b==k) printf("%d+%d\n",a,b);
        if(a-b==k) printf("%d-%d\n",a,b);
        if(a*b==k) printf("%d*%d\n",a,b);
        if(b && a%b==0 && a/b==k) printf("%d/%d\n",a,b);
    }
    string q;
    r.clear();
    for(i=0;i<l-2;i++){
        r+=s[i];
        q.clear();
        for(j=i+1;j<l-1;j++){
            q+=s[j];
            sscanf(r.c_str(),"%d",&a);
            sscanf(q.c_str(),"%d",&b);
            sscanf(&s[j+1],"%d",&c);
            if(a+b+c==k) printf("%d+%d+%d\n",a,b,c);
            if(a+b-c==k) printf("%d+%d-%d\n",a,b,c);
            if(a+b*c==k) printf("%d+%d*%d\n",a,b,c);
            if(c && b%c==0 && a+b/c==k) printf("%d+%d/%d\n",a,b,c);
            //-
            if(a-b+c==k) printf("%d-%d+%d\n",a,b,c);
            if(a-b-c==k) printf("%d-%d-%d\n",a,b,c);
            if(a-b*c==k) printf("%d-%d*%d\n",a,b,c);
            if(c && b%c==0 && a-b/c==k) printf("%d-%d/%d\n",a,b,c);
            //*
            if(a*b+c==k) printf("%d*%d+%d\n",a,b,c);
            if(a*b-c==k) printf("%d*%d-%d\n",a,b,c);
            if(a*b*c==k) printf("%d*%d*%d\n",a,b,c);
            if(c && (a*b)%c==0 && a*b/c==k) printf("%d*%d/%d\n",a,b,c);
            // x
            if(b && a%b==0 && a/b+c==k) printf("%d/%d+%d\n",a,b,c);
            if(b && a%b==0 && a/b-c==k) printf("%d/%d-%d\n",a,b,c);
            if(b && (a*c)%b==0 && a*c/b==k) printf("%d/%d*%d\n",a,b,c);
            if(b*c && a%(b*c)==0 && a/(b*c)==k) printf("%d/%d/%d\n",a,b,c);
        }
    }
}

沒有留言:

張貼留言