わからない問題

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

わからない問題

#1

投稿記事 by たんたん » 13年前

初歩的な問題で申し訳ないのですが、よかったら解答お願いします。
(1)4桁の数字2025は2025=(20+25)^2という等式を満たす。4つの数字a,b,c,d∈{0,1,2,…9}について、同様にabcd=(ab+cd)^2の成り立つものをすべて見つけなさい。
注:(a,b,c,d)=(0,0,0,0),(0,0,0,1)も上記を満たすとする。

(2)20以下の正整数の集合から、[7の倍数]と[1の位が7のもの]を取り除くと{1,2,3,4,5,6,8,9,10,11,12,13,15,16,18,19,20}となり、その総和は172である。
1000以下の正整数の集合から,[7の倍数]と[1の位が7のもの]を取り除いて得られる整数の総和を求めよ。

(3)2から18までのすべての整数で割り切れる正整数のうち最も小さいものを求めよ。

(4)3桁の整数376の2乗は141376となり、下3桁が元の376と同じになる。
  4桁の整数(1000以上9999以下の整数)で、4乗した値の下4桁が元と同じになるものをすべて見つけなさい。
  注:int型変数の扱える最大値に注意せよ。大きな整数xに対して、x^2の下4桁を知るには、xの下4桁のみ分かれば良い。

(5)1^1+2^2+…+99^99を10000で割った余りを求めよ。

(6)Nを4桁の整数(1000以上9999以下の整数)とし、N'をNの数字を逆順にならべたものとする
  N'=9Nを満たす数字にN=1089,N'=9801がある
  N'=4Nを満たす数字をすべて見つけなさい。

(7)195を3倍して6を加えると3*195+6=591となって、数字が逆順にならぶ。9,999,999以下の正整数xで,3x+6がxの逆順となるものをすべて求めよ。

問題を投げ捨てる形で申し訳ないですが、よろしくお願いします

アバター
h2so5
副管理人
記事: 2212
登録日時: 14年前
住所: 東京
連絡を取る:

Re: わからない問題

#2

投稿記事 by h2so5 » 13年前

丸投げ(投げ捨て)は規約上禁止です。

アバター
softya(ソフト屋)
副管理人
記事: 11677
登録日時: 15年前
住所: 東海地方
連絡を取る:

Re: わからない問題

#3

投稿記事 by softya(ソフト屋) » 13年前

フォーラムルールに宿題・課題を質問する場合のルールが記載されていますのでまずお読みください。
http://dixq.net/board/board.html

最低限のルールとして
・自分で出来る限りの事をやること。
・未完成でもソースコードを提示すること。
・複数の問題をまとめて質問しないこと。
・締め切りを明確にすること。
をお願いします。
by softya(ソフト屋) 方針:私は仕組み・考え方を理解して欲しいので直接的なコードを回答することはまれですので、すぐコードがほしい方はその旨をご明記下さい。私以外の方と交代したいと思います(代わりの方がいる保証は出来かねます)。

アバター
バグ
記事: 130
登録日時: 15年前
住所: 愛媛県
連絡を取る:

Re: わからない問題

#4

投稿記事 by バグ » 13年前

とりあえず1だけ・・・

コード:

static void Main(string[] args)
{
    foreach (int i in Enumerable.Range(0, 10000).Where(n => n == Math.Pow(n / 100 + n % 100, 2)))
        Console.WriteLine(i.ToString("0000"));
}
最後に編集したユーザー バグ on 2012年4月16日(月) 10:38 [ 編集 2 回目 ]

アバター
bitter_fox
記事: 607
登録日時: 14年前
住所: 大阪府

Re: わからない問題

#5

投稿記事 by bitter_fox » 13年前

とりあえず作ってみましたが答えがあってるかどうかは分りません。

Q1

コード:

object Q1
{
	def main(args : Array[String]) : Unit = (0 to 9999).filter(x => x == scala.math.pow(x / 100 + x % 100, 2).asInstanceOf[Int]).foreach(println)
}
Q2

コード:

object Q2
{
	def main(args : Array[String]) : Unit = println((1 to 1000).filter(_ % 7 != 0).filter(_ % 10 != 7).sum)
}
Q3

コード:

object Q3
{
	def producePrimesUnder(n : Int) = (2 to n).filter(x => (2 to x - 1).count(x % _ == 0) == 0)

	def count[T](t : T, stopper : T => Boolean, f : T => T, n : Int = 0) : Int = if (!stopper(t)) count(f(t), stopper, f, n + 1) else n

	def main(args : Array[String]) : Unit = println(producePrimesUnder(18).map(p => (p, (2 to 18).map(count[Int](_, _ % p != 0, _ / p)).reduce(scala.math.max))).map(t => scala.math.pow(t._1,  t._2)).reduce((x, y) => x * y).asInstanceOf[Int])
}
Q4

コード:

object Q4
{
	def main(args : Array[String])
	{
		val f = (x : Int, y : Int) => (x, (scala.math.pow(y, 2) % 10000).asInstanceOf[Int])
		(1000 to 9999).map(x => (x, x.asInstanceOf[Int])).map(f.tupled.andThen(f.tupled)).filter(t => t._1 == t._2).foreach(t => println(t._1))
	}
}
Q5

コード:

object Q5
{
	def powWithUnder4Digit(n : Int, m : Int) : Int = (1 to m).map(x => n).reduce((x, y) => x * y % 10000)

	def main(args : Array[String]) : Unit = println(((1 to 99).map(x => powWithUnder4Digit(x, x)).sum % 10000).asInstanceOf[Int])
}
Q6

コード:

object Q6
{
	def reversedInt(n : Int) : Int = Integer.parseInt(n.toString.reverse)

	def main(args : Array[String]) : Unit = (1000 to 9999).filter(x => x == reversedInt(x) * 4).foreach(println)
}
Q7

コード:

object Q7
{
	def main(args : Array[String]) : Unit = (1 to 9999999).filter(x => x.toString == (3 * x + 6).toString.reverse).foreach(println)
}
[hr][修正]Q3を修正
[修正]Q2が間違っていたので修正
[修正]Q5を修正
最後に編集したユーザー bitter_fox on 2012年4月16日(月) 12:37 [ 編集 2 回目 ]

たかぎ
記事: 328
登録日時: 15年前
住所: 大阪
連絡を取る:

Re: わからない問題

#6

投稿記事 by たかぎ » 13年前

(1)だけCで作ってみました。

コード:

#include <stdio.h>

int main(void)
{
    for (int i = 0, abcd; (abcd = i * i) <= 9999; i++)
    {
        int t = abcd / 100 + abcd % 100;
        t *= t;
        if (abcd == t)
            printf("%04d\n", abcd);
    }
    return 0;
}

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

Re: わからない問題

#7

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

解きました。
どこにも「プログラムを書け」とは書いてありませんよね?
► スポイラーを表示
複雑な問題?マシンの性能を上げてOpenMPで殴ればいい!(死亡フラグ)

かずま

Re: わからない問題

#8

投稿記事 by かずま » 13年前

動くかもしれないプログラムです。

コード:

j;main(i){for(;j<=9999;j++)i=j/100+j%100,j==i*i&&printf("%04d\n",j);}
j,k;main(i){while(++j<=1000)j%7&&j%10!=7&&(k+=j);printf("%d\n",k);}
main(){printf("%d\n",2*3*2*5*1*7*2*3*1*11*1*13*1*1*2*17*1);}
j;main(i){for(j=1000;j<=9999;j++){i=j*j%10000;if(i*i%10000==j)printf("%d\n",j);}}
j,k,n;main(i){while(++j<=99){i=1;for(k=j;k--;)i=i*j%10000;n+=i;}printf("%d\n",n%10000);}
main(i){for(i=1000;i<=9999;i++){i%10*1000+i/10%10*100+i/100%10*10+i/1000==4*i&&printf("%d\n",i);}}
j,k;main(i){for(;++j<=3333333;){k=0;for(i=j;i;i/=10)k=k*10+i%10;k==3*j+6&&printf("%d\n",j);}}

閉鎖

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