実行できません

フォーラム(掲示板)ルール
フォーラム(掲示板)ルールはこちら  ※コードを貼り付ける場合は [code][/code] で囲って下さい。詳しくはこちら
やほー

実行できません

#1

投稿記事 by やほー » 13年前

ここまでやったのですが、わからないので教えてください

問題はx=17846とすると、x^2+x=318497562となって、1〜9の数字を丁度一個ずつ含む9桁の整数となる。x^2+xが上記のような性質を満たす整数xをすべて求めよ

#include<stdio.h>
int main(void)
{
int y,x,a,b,c,d,e,f,g,h,i,m=0;


for(x=10000;x<31623;x++)
{
y=x*x+x;

a=y/100000000;
b=(y-a*100000000)/10000000;
c=(y-a*100000000-b*10000000)/1000000;
d=(y-a*100000000-b*10000000-c*1000000)/100000;
e=(y-a*100000000-b*10000000-c*1000000-d*100000)/10000;
f=(y-a*100000000-b*10000000-c*1000000-d*100000-e*10000)/1000;
g=(y-a*100000000-b*10000000-c*1000000-d*100000-e*10000-f*1000)/100;
h=(y-a*100000000-b*10000000-c*1000000-d*100000-e*10000-f*1000-g*100)/10;
i=y-a*100000000-b*10000000-c*1000000-d*100000-e*10000-f*1000-g*100-h*10;

if(a==1 || b==1 || c==1 || d==1 || e==1 || f==1 || g==1 || h==1 || i==1)
m++;

if(a==2 || b==2 || c==2 || d==2 || e==2 || f==2 || g==2 || h==2 ||i==2)
m++;

if(a==3 || b==3 || c==3 || d==3 || e==3 || f==3 || g==3 || h==3 || i==3)
m++;

if(a==4 || b==4 || c==4 || d==4 || e==4 || f==4 || g==4 || h==4 || i==4)
m++;

if(a==5 || b==5 || c==5 || d==5 || e==5 || f==5 || g==5 || h==5 || i==5)
m++;

if(a==6 || b==6 || c==6 || d==6 || e==6 || f==6 || g==6 || h==6 || i==6)
m++;

if(a==7 || b==7 || c==7 || d==7 || e==7 || f==7 || g==7 || h==7 || i==7)
m++;

if(a==8 || b==8 || c==8 || d==8 || e==8 || f==8 || g==8 || h==8 || i==8)
m++;

if(a==9 || b==9 || c==9 || d==9 || e==9 || f==9 || g==9 || h==9 || i==9)
m++;

if(m==9)
printf("%d\n",x);
}

return(0);
}

box
記事: 2002
登録日時: 15年前

Re: 実行できません

#2

投稿記事 by box » 13年前

やほー さんが書きました:

コード:

  int y,x,a,b,c,d,e,f,g,h,i,m=0;
mの初期化は、ループの外でただ一度、で本当にいいのでしょうか。
バグのないプログラムはない。
プログラムは思ったとおりには動かない。書いたとおりに動く。

アバター
みけCAT
記事: 6734
登録日時: 15年前
住所: 千葉県
連絡を取る:

Re: 実行できません

#3

投稿記事 by みけCAT » 13年前

コードはできるだけcodeタグを用いて貼り付けてください。
複雑な問題?マシンの性能を上げてOpenMPで殴ればいい!(死亡フラグ)

初級者
記事: 200
登録日時: 15年前

Re: 実行できません

#4

投稿記事 by 初級者 » 13年前

ちょっとしたサンプルです。

コード:

#include <stdio.h>
#include <string.h>

int main(void)
{
    int x, y, z, i;
    char m[10];

    for (x = 10000; x <= 31622; x++) {
        memset(m, 0, 10);
        z = y = x * (x + 1);
        for (i = 0; i < 9; i++) {
            if (y % 10 == 0 || ++m[y % 10] >= 2) {
                break;
            }
            y /= 10;
        }
        if (i == 9) {
            printf("%d*%d=%d\n", x, x + 1, z);
        }
    }
    return 0;
}

閉鎖

“C言語何でも質問掲示板” へ戻る