简体   繁体   中英

This is about complex three number

Thats one wrong with my code and I dont have any idea about this wrong Please be attention to that I can just use from for and while and if

The question is: Write a code that gets the natural number n then tries to find x,y,z (natural numbers) in some way: n=x+y+z

Then if the following is true of x, y, z, print these three numbers in the output, otherwise print the Not Found statement:

x = y ^ 2 + z ^ 2

(x or y or z) = i + (i + 1) + (i + 2)

Where i is a natural number. Be it. Then if the following is true of x, y, z, print these three numbers in the output, otherwise print the Not Found statement:

x = y ^ 2 + z ^ 2

(x or y or z) = i + (i + 1) + (i + 2)

Where i is a natural number.

(Note that the input n is such that the int variable is sufficient and does not overflow.)

Input

The input contains a line in which a natural number is given.

Output

The output must either consist of three lines, each integer x, y, and z, respectively, from small to large, or the expression Not Found.

Example

Sample Input 1

48

Copy

Sample output 1

2 6 40

Copy

Sample input 2

5

Copy

Sample output 2

Not found

#include <stdio.h> 
int main() { 
    int z,x,y,n; 
    scanf("%u",&n); 
    for(y=1;y<(n/3);y++) {
        for(z=y;z<=((2*n)/3);z++) {
            (x=(n-(y+z))); 
            if(x==((y*y)+(z*z))) {
                if(((((y-3)%3)!=0)||(y==3))&&((((z-3)%3)!=0)||(z==3))&&((((x-3)%3)!=0)||(x==3))) {
                    continue; 
                } 
                printf("%d\n",y); 
                printf("%d\n",z); 
                printf("%d",x); return 0; 
            } 
        } 
    } 
    printf("Not found"); 
    return 0; 
}

This syntax (if(x==((yy)+(zz))) is wrong. It should be if (x == ((y*y)+(z*z))) or use pow function from math.h library like this (if(x == (pow(y,2)+pow(z,2)))

int main()
{
    int z, x, y, n;
    scanf("%u", &n);
    for (y = 1; y < (n / 3); y++)
    {
        for (z = y; z <= ((2 * n) / 3); z++)
        {
            (x = (n - (y + z)));
            if (x == ((y*y)+(z*z)))
            {
                if (((((y - 3) % 3) != 0) || (y == 3)) && ((((z - 3) % 3) != 0) || (z == 3)) && ((((x - 3) % 3) != 0) || (x == 3)))
                {
                    continue;
                }
                printf("%d\n", y);
                printf("%d\n", z);
                printf("%d", x);
                return 0;
            }
        }
    }
    printf("Not found");
    return 0; 
}

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM