このブログへのリンク:https://www.cnblogs.com/ping2yingshi/p/12395220.html
1.オペレーターの野菜(22min)
トピックリンク:http://acm.hdu.edu.cn/showproblem.php?pid=2090
問題の説明
母のうち、ポケットマネーを毎日食べ物を買うが、戻ってきたためにお金が本当に混乱でどのくらいの最後には、カウントする気にしないでください。さて、プログラムの良い息子(娘)として、あなたは彼女を与えることができハァッ、ハァッ、数えます。
入力
いくつかの入力データ・セット、菜種(文字列)を含む各データ数(測定の単位に関係なく、ダブルタイプのすべての数値)および一価(細胞RMBの数を表すdouble型の数)、従って、各データ・野菜含有します数は、単価ああを掛けています。数量と単価との間の野菜種子は、スペースで区切られています。
出力
野菜の場合は支払い、それは常に個別に削除する支払い方法を四捨五入したときの角度は、最低支払額の単位であるためです。最後に、野菜角の総量の出力精度。
サンプル入力
野菜12
ローブ2 1.5
チキン2 4.2
サンプル出力
13.4
ソリューション:
どのくらいの時間、文字列や数値を読みながらどのようにこの問題について主にデータの処理、およびそこにサンプリングするかわかりません。
アイデア:
1.文字列型を定義します。
2.のscanf()は、ファイルの終わりを検出するまで抗入る飲み続けることができます。
注:VSエディタを使用するときは、そうでない場合はコンパイルエラー、文字列の入力端のサイズを記入する必要があります。
コードは以下の通りであります:
INT メイン() { チャー vegname [ 100 ]。 ダブルカウント数; 重賞; 二重の合計= 0 ; しばらく(scanf_s(" %sの%LF%LF "、vegname、100!、&カウント、&賞)= EOF) { 合計 + =カウント* 賞。 } のprintf(" %の0.1lf \ n " 、合計)。 リターン 0 ; }
2.Fibbonacci番号(50分)
トピックリンク:http://acm.hdu.edu.cn/showproblem.php?pid=2070
問題の説明
この質問のためのあなたの目的はfibbonacci番号を生成するプログラムを開発することです。:fibbonacci関数は、として定義され
、F(0)= 0
、F(1)= 1
、F(N)= F(N-1)+ F(N-2)
プログラムでのnの値を処理することができなければなりません0〜50の範囲です。
、F(0)= 0
、F(1)= 1
、F(N)= F(N-1)+ F(N-2)
プログラムでのnの値を処理することができなければなりません0〜50の範囲です。
入力
各テストケースは、単一の行0≤n≤50に1つの整数n個から成ります。入力は-1で終了します。
出力
各テストケースのための単一の行で答えをプリントアウト。
サンプル入力
3
4
5
-1
サンプル出力
2
3
5
注意:
__int64:あなたは64ビット整数を使用することができます
ソリューション:
方法:または再帰サイクル。
注:この問題は非常に速く書くことが、それでも数の範囲の主題を見るために、この質問の結果は非常に大きくなる可能性が原因ではない交流、私は出力形式に型_int64、注意を払うの変数を定義するために、トピックを辿ります。
時間がかかる理由:私はこの問題を行うには、再帰を使用し始めたが、データ型は戻り値は、直接ではない関数値__int64型を返す方法を見つけた情報ページの多くを見つけるために__int64 __int64を、戻すことはできませんです。
コードは以下の通りであります:
する#include <stdio.hに> する#include <math.h>の 書式#include <STDLIB.H> する#include < 文字列・H> int型のmain() { int型のn; _int64結果[ 10000 ]。 一方(〜scanf_s(" %のD "、&N)) { 場合(N == - 1 ) ブレーク。 結果[ 0 ] = 0 ; 結果[ 1 ] = 1 。 int型私は= 0を。 にとって(iは= 2、I <= N; I ++ ) 結果[I] =結果[I - 1 ] +結果[I - 2 ]。 printf(" %I64d \ n " 、結果[N])。 } 戻り 0 。 }