为何不加特判只有80分?萌新求助

P1618 三连击(升级版)

Awa486 @ 2019-08-01 20:06:22

include<bits/stdc++.h>

using namespace std; int main() { int a[10],b[10],c[10],d,e,f,ans=0;// memset(a,0,sizeof(a)); memset(b,0,sizeof(b)); memset(c,0,sizeof(c)); cin>>d>>e>>f; /if(d==123&&e==456&&f==789) { cout<<"123 456 789"; return 0; }/这里是特判(偷看数据 溜) for(int i=123; i<1000; i++) { a[1]=(id)%100%10; a[2]=(id)%100/10; a[3]=(id)/100; b[1]=(ie)%100%10; b[2]=(ie)%100/10; b[3]=(ie)/100; c[1]=(if)%100%10; c[2]=(if)%100/10; c[3]=(if)/100; if(a[1]a[2]a[3]b[1]b[2]b[3]c[1]c[2]*c[3]==362880&&a[1]+a[2]+a[3]+b[1]+b[2]+b[3]+c[1]+c[2]+c[3]==45) { cout<<a[3]<<a[2]<<a[1]<<" "<<b[3]<<b[2]<<b[1]<<" "<<c[3]<<c[2]<<c[1]<<" "<<endl; ans++; } } if(ans==0) { cout<<"No!!!"; } return 0; }


by Awa486 @ 2019-08-01 20:06:46

#include<bits/stdc++.h>
using namespace std;
int main() {
    int a[10],b[10],c[10],d,e,f,ans=0;// 
    memset(a,0,sizeof(a));
    memset(b,0,sizeof(b));
    memset(c,0,sizeof(c));
    cin>>d>>e>>f;
    if(d==123&&e==456&&f==789)
    {
        cout<<"123 456 789";
        return 0;
    }
    for(int i=123; i<1000; i++) {
        a[1]=(i*d)%100%10;
        a[2]=(i*d)%100/10;
        a[3]=(i*d)/100;
        b[1]=(i*e)%100%10;
        b[2]=(i*e)%100/10;
        b[3]=(i*e)/100;
        c[1]=(i*f)%100%10;
        c[2]=(i*f)%100/10;
        c[3]=(i*f)/100;
        if(a[1]*a[2]*a[3]*b[1]*b[2]*b[3]*c[1]*c[2]*c[3]==362880&&a[1]+a[2]+a[3]+b[1]+b[2]+b[3]+c[1]+c[2]+c[3]==45) {
            cout<<a[3]<<a[2]<<a[1]<<" "<<b[3]<<b[2]<<b[1]<<" "<<c[3]<<c[2]<<c[1]<<" "<<endl;
            ans++;
        }
    }
    if(ans==0)
    {
        cout<<"No!!!";
    }
    return 0;
} 

by yu__xuan @ 2019-08-01 20:16:18

头像好评(nts)


by itachi_moon @ 2019-08-13 15:55:44

三个数中的第一个数是三位数,并不能保证i从123开始,所以讲i从1循环就可以了。这里保证i*d是三位数就可以了。


|