清華大学の2001年の再試験の上で機械の問題の第1セットの解題の報告
九度OJ題目1062:セグメント関数
時間制限:1秒メモリ制限:32メガ特殊判題:No提出:397解決:223
タイトルの説明:
次のセグメント関数y=f(x)の値を計算するプログラムを作成します.
y=-x+2.5; 0<=x<2
y=2-1.5(x-3)(x-3); 2<=x<4
y=x/2-1.5; 4<=x<6
入力:
浮動小数点数N
出力:
テストデータは複数のグループがあり、各グループのデータに対して、
Nに対応するセグメント関数値:f(N)を出力します.結果3 D小数点以下を保持
サンプル入力:
1
サンプル出力:
1.500
九度OJ題目1063:整数和
時間制限:1秒メモリ制限:32メガ特殊判定:No提出:349解決:244
タイトルの説明:
プログラムを作成し、整数Nを読み込む.
Nが負でない場合、Nから2 Nの間の整数和を計算する.
Nが1つの負数ならば、2 NからNの間の整数の和を求めます
入力:
1つの整数N、Nの絶対値は1000以下である
出力:
テストデータは複数のグループがあり、各グループのデータに対して、
問題要求の値を出力
サンプル入力:
1
-1
サンプル出力:
3
-3
九度OJテーマ1064:逆序数
時間制限:1秒メモリ制限:32メガ特殊判題:No提出:275解決:219
タイトルの説明:
Nを4桁とし、その9倍がちょうどその逆シーケンス数(例えば、1234の逆シーケンス数は4321)である.
Nの値を求める
入力:
プログラムには入力データがありません
出力:
問題に要求された四桁数を出力し、結果が複数組ある場合、各組の結果間はリターンで区切られる
時間制限:1秒メモリ制限:32メガ特殊判題:No提出:397解決:223
タイトルの説明:
次のセグメント関数y=f(x)の値を計算するプログラムを作成します.
y=-x+2.5; 0<=x<2
y=2-1.5(x-3)(x-3); 2<=x<4
y=x/2-1.5; 4<=x<6
入力:
浮動小数点数N
出力:
テストデータは複数のグループがあり、各グループのデータに対して、
Nに対応するセグメント関数値:f(N)を出力します.結果3 D小数点以下を保持
サンプル入力:
1
サンプル出力:
1.500
// 2001: 1062:
// , y=f(x) 。
//y=-x+2.5; 0<=x<2
//y=2-1.5(x-3)(x-3); 2<=x<4
//y=x/2-1.5; 4<=x<6
#include <iostream>
using namespace std;
int main()
{
int i, j, t;
float n;
while( cin >> n ){
cout.setf(ios::fixed);
cout.precision(3);
if( n<2 )
cout << 2.5-n << endl;
else if( n<4 )
cout << 2-1.5*(n-3)*(n-3) << endl;
else
cout << n/2-1.5 << endl;
}
//system("pause");
return 0;
}
九度OJ題目1063:整数和
時間制限:1秒メモリ制限:32メガ特殊判定:No提出:349解決:244
タイトルの説明:
プログラムを作成し、整数Nを読み込む.
Nが負でない場合、Nから2 Nの間の整数和を計算する.
Nが1つの負数ならば、2 NからNの間の整数の和を求めます
入力:
1つの整数N、Nの絶対値は1000以下である
出力:
テストデータは複数のグループがあり、各グループのデータに対して、
問題要求の値を出力
サンプル入力:
1
-1
サンプル出力:
3
-3
// 2001: 1063:
// , N (N<=1000)
// N , N 2N
// N , 2N N
#include <iostream>
using namespace std;
int main()
{
int i, j, t, n;
while( cin >> n ){
t = 0;
if( n<0 )
cout << 3*n*(-n+1)/2 << endl;
else
cout << 3*n*(n+1)/2 << endl;
}
//system("pause");
return 0;
}
九度OJテーマ1064:逆序数
時間制限:1秒メモリ制限:32メガ特殊判題:No提出:275解決:219
タイトルの説明:
Nを4桁とし、その9倍がちょうどその逆シーケンス数(例えば、1234の逆シーケンス数は4321)である.
Nの値を求める
入力:
プログラムには入力データがありません
出力:
問題に要求された四桁数を出力し、結果が複数組ある場合、各組の結果間はリターンで区切られる
// 2001: 1064:
// N , 9 ( :1234 4321)
// N
#include <iostream>
using namespace std;
int reverse( int x ){ // 4
int i, j, a[4], y=0;
for( i=0; i<4; i++ ){
a[i] = x % 10;
x /= 10;
}
for( i=0; i<4; i++ )
for( j=0; j<3-i; j++ )
a[i] *= 10;
for( i=0; i<4; i++ )
y += a[i];
return y;
};
int main()
{
int i, j, n, t;
//while( cin >> n )
// cout << reverse(n);
for( i=1000; i<=1111; i++ ) //9*1112>1w 5
if( 9*i == reverse(i) )
cout << i;
system("pause");
return 0;
}