簡単な問題です。
- bitter_fox
- 記事: 607
- 登録日時: 13年前
- 住所: 大阪府
Re: 簡単な問題です。
soyuta672 さんが書きました:2個の整数を読み込んで、n個の中からr個を取って
並べる順列の総数を出力するプログラムを書いてください。
まずは簡単な問題1です^^
object Main
{
def main(args : Array[String])
{
var f = () => (Integer parseInt System.console.readLine)
var (n, r) = (f(), f())
println((Main ! n) / (Main ! n - r))
}
def !(n : Int) : Long = if (n > 0) n * (Main ! n - 1) else 1
}
[hr][修正]
正しくなかったので修正
[修正]
もうちょっと修正(関数名とか色々)
Re: 簡単な問題です。
質問掲示板に出題とは考えていませんでした。
順列ってなんだっけ?と少々ボケ始めていたのでちょっと書いてみました。
おや?Tclは使えないのか…括弧が消えてしまうようだ
仕方ないのでテキストで載せましょうか、
こんな感じでいかがでしょうか?
順列ってなんだっけ?と少々ボケ始めていたのでちょっと書いてみました。
► スポイラーを表示
proc permute { n r } {
if {$n < $r} {
return 1
} else {
return [expr $n * [permute [expr $n - 1] $r]]
}
}
if {$argc == 2} {
set n [lindex $argv 0]
set r [lindex $argv 1]
puts [permute $n [expr $n - $r + 1]]
}
こんな感じでいかがでしょうか?
Re: 簡単な問題です。
普通にC言語で解いてみました。
本当に簡単ですね。
本当に簡単ですね。
#include <stdio.h>
int main(void) {
unsigned int n,r,result;
scanf("%u%u",&n,&r);
asm volatile (
"mov %1,%%ebx\n\t"
"mov %2,%%ecx\n\t"
"mov $0,%%eax\n\t"
"cmp $0,%%ebx\n\t"
"jbe loopend\n\t"
"cmp $0,%%ecx\n\t"
"jb loopend\n\t"
"mov $1,%%eax\n\t"
"loopstart:\n\t"
"cmp $0,%%ecx\n\t"
"jbe loopend\n\t"
"mul %%ebx\n\t"
"dec %%ebx\n\t"
"dec %%ecx\n\t"
"jmp loopstart\n\t"
"loopend:\n\t"
"mov %%eax,%0\n\t"
: "=m"(result)
: "m"(n),"m"(r)
: "%eax","%ebx","%ecx","%edx");
printf("%u\n",result);
return 0;
}
複雑な問題?マシンの性能を上げてOpenMPで殴ればいい!(死亡フラグ)
Re: 簡単な問題です。
流れに乗ってみる
日本語は解釈のしかたによりますよね
二つの数を受け取って
プログラムを書きます。
何の問題もない
#include <iostream>
using namespace std;
int main(){
int n, r;
cin >> n >> r;
cout <<
"#include <iostream> \n" <<
"using namespace std; \n " <<
"template< int N > \n " <<
"struct Int{ \n " <<
" enum { value = N }; \n " <<
"}; \n " <<
"template< typename T > \n " <<
"struct Factorial{ \n " <<
"}; \n " <<
"template < int N > \n " <<
"struct Factorial< Int <N> >{ \n " <<
" enum { value = Int<N>::value * Factorial< Int <N - 1> >::value }; \n " <<
"}; \n " <<
"template <> \n " <<
"struct Factorial< Int <0 > >{ \n " <<
" enum { value = Int<1>::value }; \n " <<
"}; \n " <<
"template< typename T , typename U> \n " <<
"struct nPr{ \n " <<
"}; \n " <<
"template < int N , int R > \n " <<
"struct nPr< Int<N>, Int<R> >{ \n " <<
" enum { value = Factorial< Int<N> >::value / Factorial< Int<R> >::value }; \n " <<
"}; \n " <<
"int main(){ \n " <<
" cout << nPr< Int<" << n <<">, Int<" <<r <<"> >::value <<endl; \n " <<
"} \n " << endl;
}
二つの数を受け取って
プログラムを書きます。
何の問題もない
- bitter_fox
- 記事: 607
- 登録日時: 13年前
- 住所: 大阪府
Re: 簡単な問題です。
Java×JavaScriptです。
import javax.script.*;
public class Main
{
public static void main(String[] args) throws ScriptException
{
int n = Integer.parseInt(System.console().readLine());
int m = n - Integer.parseInt(System.console().readLine());
ScriptEngine se = new ScriptEngineManager().getEngineByName("JavaScript");
StringBuilder sb = new StringBuilder("print(");
for (sb.append(n--); n > m; n--)
{
sb.append('*').append(n);
}
se.eval(sb.append(')').toString());
}
}
- bitter_fox
- 記事: 607
- 登録日時: 13年前
- 住所: 大阪府
Re: 簡単な問題です。
JavaFX1です
import javafx.geometry.*;
import javafx.stage.*;
import javafx.scene.*;
import javafx.scene.control.*;
import javafx.scene.input.*;
import javafx.scene.layout.*;
import javafx.scene.text.*;
var textBoxN = TextBox
{
columns : 3
}
var textBoxR = TextBox
{
columns : 3
}
var labelAns = Label
{
font : Font
{
size : 20
}
}
Stage
{
title : "Permutation"
scene : Scene
{
content :
[
VBox
{
content :
[
HBox
{
content :
[
textBoxN, textBoxR,
Button
{
text : "Permutation"
onMouseClicked : function(e : MouseEvent) : Void
{
var n = Integer.parseInt(textBoxN.text);
var r = n - Integer.parseInt(textBoxR.text) + 1;
var nums = [r..n];
var ans = 1;
for (i in nums)
{
ans *= i;
}
labelAns.text = ans.toString();
}
}
]
},
labelAns
]
}
]
}
}
Re: 簡単な問題です。
さて、もう1つ作成してみたのでよろしければ確認してみていただけないでしょうか?
bashだと通常の演算が文字列の計算になってしまうのが面倒ですよね。
[追記]
インデントに不備があったので修正
bashだと通常の演算が文字列の計算になってしまうのが面倒ですよね。
#!/bin/bash
if [ $# -eq 2 ]
then
let n=$1
let m=$2
let p=1
if [ $n -lt $m ]
then
p=1
else
let m="${n} - ${m} + 1"
while [ $m -le $n ]
do
let p="${p} * ${m}"
let m="${m} + 1"
done
fi
echo $p
else
echo "argument mismatch."
fi
インデントに不備があったので修正
Re: 簡単な問題です。
Visual Basicで
[hr]
C++だと骨が折れるのでVBに変更(笑)
Module Module1
Function Fact(ByVal n As Integer, ByVal r As Integer) As Integer
If n < r Then
Return 1
Else
Return n * Fact(n - 1, r)
End If
End Function
Sub Main()
Dim n As Integer
Dim r As Integer
n = CInt(Console.ReadLine())
r = CInt(Console.ReadLine())
Console.WriteLine(n + "P" + r + "=" + Fact(n, r))
End Sub
End Module
C++だと骨が折れるのでVBに変更(笑)
最後に編集したユーザー naohiro19 on 2011年11月10日(木) 15:40 [ 編集 2 回目 ]
Re: 簡単な問題です。
せっかくなので。
バッチファイルでもできました。面倒なのでエラーチェックは省いています。
# XP以降なら動くはず。Vistaで確認。SET /Aで計算できることが条件です。
バッチファイルでもできました。面倒なのでエラーチェックは省いています。
# XP以降なら動くはず。Vistaで確認。SET /Aで計算できることが条件です。
Re: 簡単な問題です。
perl復習中なのでperlでも書いてみました。
最低限のエラーチェックしかしてませんが、perl5.6.1では動いてます。
最低限のエラーチェックしかしてませんが、perl5.6.1では動いてます。
Re: 簡単な問題です。
C#のコンソールアプリで書いてみました。おや、JAVAと同じだ。
ほんと、いろんな言語がありますね。
スレ主さんは、出てこないね。
みけCATさんのホワイトスペースってのは、言語にすら見れない。
面白そうだから、ちょっと調べてみよっと。
ほんと、いろんな言語がありますね。
スレ主さんは、出てこないね。
みけCATさんのホワイトスペースってのは、言語にすら見れない。
面白そうだから、ちょっと調べてみよっと。
non
Re: 簡単な問題です。
C++で。
#include <iostream>
#include <iterator>
#include <numeric>
#include <functional>
template <typename T>
class CountIterator : public std::iterator<std::input_iterator_tag, T>
{
T count_;
const T diff_;
public:
CountIterator(const T& count = 0, const T& diff = 1) : count_(count), diff_(diff) {}
const T& operator *() const { return count_; }
CountIterator& operator ++() { count_ += diff_; return *this; }
bool operator !=(const CountIterator& rhs) const { return count_ != rhs.count_; }
bool operator ==(const CountIterator& rhs) const { return !((*this) != rhs); }
};
int main()
{
typedef unsigned long NumType;
NumType n, r;
std::cin >> n >> r;
std::cout << std::accumulate(CountIterator<NumType>(n, -1), CountIterator<NumType>(n - r), 1, std::multiplies<NumType>()) << std::endl;
}
最後に編集したユーザー beatle on 2011年11月10日(木) 19:27 [ 編集 1 回目 ]
Re: 簡単な問題です。
で遅れたw
まずは,って事は第2問に期待してもいいのでしょうか?
皆さんいろいろな言語で書かれていて私にはほとんど分からないですw
私は普通で申し訳ないですがC++で、
===============
あーかぶった...そしていろんな意味で負けた...ORZ
まずは,って事は第2問に期待してもいいのでしょうか?
皆さんいろいろな言語で書かれていて私にはほとんど分からないですw
私は普通で申し訳ないですがC++で、
#include <iostream>
main(){int neko,n,r,i;for(printf("入力=n r:"),scanf("%d %d",&n,&r),i=1,neko=n;i<=r;n*=neko-i++)printf("%d\n",n);}
あーかぶった...そしていろんな意味で負けた...ORZ
最後に編集したユーザー パコネコ on 2011年11月10日(木) 21:13 [ 編集 2 回目 ]
ニャン!!\(゜ロ\)(/ロ゜)/
- bitter_fox
- 記事: 607
- 登録日時: 13年前
- 住所: 大阪府
Re: 簡単な問題です。
懐かしいTTSneo(´;ω;`)
ウィンドウ1の作成
ウィンドウ1を表示する
待機する
手順は ウィンドウ1の作成
’ウィンドウの設計で自動処理されますので
’次のプログラムは変更しないでください
’<ウィンドウ1>
ウィンドウ1を使う
その中の大きさを(304,143)へ変える
その名前を「ウィンドウ1」へ変える
その背景を&h8000000Fへ変える
テキスト1を作る
その位置と大きさを(30,20,250,20)へ変える
テキスト2を作る
その位置と大きさを(30,50,250,20)へ変える
ボタン1を作る
その位置と大きさを(110,90,90,40)へ変える
’</ウィンドウ1>
’部品の初期化などは、この次から書き加えてください
終わり
手順は ウィンドウ1のボタン1をクリック
テキスト1の内容を、nへ入れろ
テキスト2の内容を、rへ入れろ
結果は、1
(n-r+1)からnまでカウンタにカウントして繰り返せ
結果は、結果×カウンタ
繰り返し終わり
結果を表示
終わり
Re: 簡単な問題です。
MSILで
.method private hidebysig static void Main(string[] args) cil managed
{
.entrypoint
// コード サイズ 86 (0x56)
.maxstack 4
.locals init ([0] int32 n,
[1] int32 r,
[2] object[] CS$0$0000)
IL_0000: ldarg.0
IL_0001: ldc.i4.0
IL_0002: ldelem.ref
IL_0003: call int32 [mscorlib]System.Int32::Parse(string)
IL_0008: stloc.0
IL_0009: ldarg.0
IL_000a: ldc.i4.1
IL_000b: ldelem.ref
IL_000c: call int32 [mscorlib]System.Int32::Parse(string)
IL_0011: stloc.1
IL_0012: ldc.i4.5
IL_0013: newarr [mscorlib]System.Object
IL_0018: stloc.2
IL_0019: ldloc.2
IL_001a: ldc.i4.0
IL_001b: ldloc.0
IL_001c: box [mscorlib]System.Int32
IL_0021: stelem.ref
IL_0022: ldloc.2
IL_0023: ldc.i4.1
IL_0024: ldstr "P"
IL_0029: stelem.ref
IL_002a: ldloc.2
IL_002b: ldc.i4.2
IL_002c: ldloc.1
IL_002d: box [mscorlib]System.Int32
IL_0032: stelem.ref
IL_0033: ldloc.2
IL_0034: ldc.i4.3
IL_0035: ldstr "="
IL_003a: stelem.ref
IL_003b: ldloc.2
IL_003c: ldc.i4.4
IL_003d: ldloc.0
IL_003e: ldloc.1
IL_003f: call int32 ConsoleApplication1.Program::fact(int32,
int32)
IL_0044: box [mscorlib]System.Int32
IL_0049: stelem.ref
IL_004a: ldloc.2
IL_004b: call string [mscorlib]System.String::Concat(object[])
IL_0050: call void [mscorlib]System.Console::WriteLine(string)
IL_0055: ret
} // end of method Program::Main
.method private hidebysig static int32 fact(int32 n,
int32 r) cil managed
{
// コード サイズ 18 (0x12)
.maxstack 8
IL_0000: ldarg.0
IL_0001: ldarg.1
IL_0002: blt.s IL_0010
IL_0004: ldarg.0
IL_0005: ldarg.0
IL_0006: ldc.i4.1
IL_0007: sub
IL_0008: ldarg.1
IL_0009: call int32 ConsoleApplication1.Program::fact(int32,
int32)
IL_000e: mul
IL_000f: ret
IL_0010: ldc.i4.1
IL_0011: ret
} // end of method Program::fact
Re: 簡単な問題です。
NScripterで書きました。
*define
game
*start
順列の計算をします。
nPrを計算します。\
*start2
mov %0,0
gosub *inputn
mov %1,0
gosub *inputr
mov %4,%0
mov %5,%1
gosub *calc
n=%4
r=%5
答えは%3です。@
もう一度計算しますか?
selnum %6,"はい","いいえ"
if %6=0 goto *start2
end
*inputn
nを入力してください。
現在のn=%0
selnum %2,"0","1","2","3","4","5","6","7","8","9","戻る","決定"
if %2=10 goto *backn
if %2=11 return
mul %0,10
add %0,%2
goto *inputn
*backn
div %0,10
goto *inputn
*inputr
rを入力してください。
現在のr=%1
selnum %2,"0","1","2","3","4","5","6","7","8","9","戻る","決定"
if %2=10 goto *backr
if %2=11 return
mul %1,10
add %1,%2
goto *inputr
*backr
div %1,10
goto *inputr
*calc
mov %3,1
*calcloop
if %1=0 return
mul %3,%0
sub %0,1
sub %1,1
goto *calcloop
複雑な問題?マシンの性能を上げてOpenMPで殴ればいい!(死亡フラグ)
Re: 簡単な問題です。
トピックを立てた人は、もう見てないのではないかと思います。
そろそろ、やめにすれば?
そろそろ、やめにすれば?
バグのないプログラムはない。
プログラムは思ったとおりには動かない。書いたとおりに動く。
プログラムは思ったとおりには動かない。書いたとおりに動く。
- Dixq (管理人)
- 管理人
- 記事: 1661
- 登録日時: 13年前
- 住所: 北海道札幌市
- 連絡を取る:
Re: 簡単な問題です。
ほとぼりも冷めたようですし、ご質問に対する回答致しますね。
soyuta672さんがこのトピックを立てた理由は何でしょうか?
課題のため?皆さんのコーディングの仕方をみたかったため?雑談トピックだった?
もしC言語の課題として出されたもので、C言語の一般的なコードが知りたければお手伝いしますので、順番に解いていきましょう。
まず、何が分からないか・どこまで分かるのかを明確にして下さい。
C言語のコードが知りたいのかどうかもまだこちらには分からないので、まずは、そこから教えて下さい。
もし課題であるならば頑張って少しずつ解いていきましょう。
soyuta672さんがこのトピックを立てた理由は何でしょうか?
課題のため?皆さんのコーディングの仕方をみたかったため?雑談トピックだった?
もしC言語の課題として出されたもので、C言語の一般的なコードが知りたければお手伝いしますので、順番に解いていきましょう。
まず、何が分からないか・どこまで分かるのかを明確にして下さい。
C言語のコードが知りたいのかどうかもまだこちらには分からないので、まずは、そこから教えて下さい。
もし課題であるならば頑張って少しずつ解いていきましょう。