羅区P1553- *桁反転アップグレード版[文字列]カテゴリーの話

質問の意味:

数を考えると、新しい番号の各ビットを反転したデジタル数にしてください。

グループの人気とNOIp2011最初の質問は異なっている:この数は小数点以下、画分、パーセンテージ、整数であることができます。次いで分別反転反転が分母であり、;分数反転は整数部分と小数部分を交換することなく、反転の数の反転は、小数部の整数部分であり、反転は全てのビットスワップの整数であります反転の分子の数は、分子と分母を交換しないように、分子のパーセントは整数、変化率のみデジタルセクションでなければなりません。新しい整数はまた、そうでない場合はゼロであってはならない新しい番号の最上位桁を反転した元の番号が与えられていない限りゼロであり、整数の一般的な形式を満たさなければならない;新しい進数の端(0でない小数部ない限り番号0に他の追加をなし、そして)のみ0を保持、分子と分母についてのポイントを獲得していないされていない小数(約滴靴は申し訳ありませんが、あまりにもああ、入力データ)は分母が0でないことを確認するために、これはそうではありません。マイナス。

今すぐ番号を与えられ、デジタルの数は、新しい番号の各ビットを反転させた下さい。

グループの人気とNOIp2011最初の質問は異なっている:この数は小数点以下、画分、パーセンテージ、整数であることができます。

Integer型の逆スワップは、すべてデジタルです。

逆転の10進数の整数部分は、整数部分と小数部分を交換することなく、反転の数の小数部分を反転します。

スコアが反転分母が分子と分母を交換することなく、その後の分子の数が反転し、反転されます。

分子のパーセントは整数、変化率のみデジタルセクションでなければなりません。

入力フォーマット
番号SS

出力フォーマット
番号の反転SSの数、すなわち

サンプル入力出力
入力#1複製
5087462
出力#1複製
2647805
入力コピー#2
600.084
出力は、#2のコピー
6.48
入力#3の複製
27分の700
の出力を#3コピー
72分の7
の入力を#4コピー
8670パーセントの
出力を#4コピー
768パーセントを
説明/ヒント
すべてのデータ:25%Sが20より大きくない整数です。

小数のフラクション、整数部と小数部は10より大きく25%秒ないれます

25%Sは分子と分母が10以下であり、画分であります

25%sはパーセント、19個の分子よりも大きくないです

(20データ)

データ保証:

整数フリップのために、そうでなければ、新しい、元の図形の最高桁の数字を反転した元の数、所与のゼロでない限り、元の整数値と新しい整数整数満たす共通のフォームの数は、ゼロであってはなりません。

小数フリップ、小数点の後ろに小数点の前面の一部を形成する、上記セクションのため、余分な00の終わりではない小数の満たす共通の形態は、(00の小数部分を除いて、他の数が存在しないことを確認するために、のみ11 00の場合を保持反転番号00の端省略冗長00)に表示された後

スコアフリップため、スコアが点ではなく、分数の分子および分母ではありません。分母がゼロではない入力します。上記参照整数の関連規定を反転します。

フリップパーセントの用語については、整数フリップ関連するコンテンツを参照してください。

負のデータは存在しません。

ソリューション:

、4例の合計に分かれ、整数、小数、分数パーセンテージで、我々はあなたが遭遇した、\ 0、小数点を掃引の左端の番号から開始することができ、この図のタイプを検出する必要があり、数字に加えて、パーセント記号を行いますループ、およびマークの位置のうちマーキングした後。
1、それが整数である場合、右に最も抜本的な左から始まる、すべてがゼロである場合にのみ、最初の非ゼロ桁、0出力を見つけ、そうでなければ非ゼロを第1逆方向のデジタル出力から出発し
、それがある場合、2境界、左の繰り返しステップ1の整数部として小数点小数点は、小数の小数点の右側は、第一の非ゼロ数と同様に事実1見つけるために右から掃引される
スコアである場合、3、及びフリップとして2つの方法一見しかし巨大なピットは、右は整数プログラムに従って反転されるべきデジタル除算記号ではなく、部分プログラムの逆であり、そこです。動作は、直接コピー2(例えばフリップ21/31 120/130であるように)穴を残している場合の
割合は、一般的なアイデアと同じ1、最終出力缶%である場合、4

コード:

#include<stdio.h>
#include<string.h>
int main()
{
	char ch[100];
	scanf("%s",ch);
	int k=0,kind=0,fir1=0,fir2=0;
	while(1)
	{
		if(ch[k]=='.')
		{
			kind=1;
			break;
		}
		if(ch[k]=='/')
		{
			kind=2;
			break;
		}
		if(ch[k]=='\0')
		{
			kind=0;
			break;
		}
		if(ch[k]=='%')
		{
			kind=3;
			break;
		}
		k++;
	}
	fir1=k-1;
	fir2=k+1;
	while(ch[fir1]=='0')
	{
		fir1--;
		if(fir1<0)
		{
			fir1=k-1;
			break;
		}
	}
	if(kind==1)while(ch[fir2]=='0')
	{
		fir2++;
		if(fir2>=strlen(ch))
		{
			fir2=k+1;
			break;
		}
	}
	if(kind==2)
	{
		fir2=strlen(ch)-1;
		while(ch[fir2]=='0')
		{
			fir2--;
			if(fir2<=k)
			{
				fir2=k+1;
				break;
			}
		}
	}
	for(int i=fir1;i>=0;i--)printf("%c",ch[i]);
	if(kind==3)printf("%%");
	else if(kind==1)printf(".");
	else if(kind==2)printf("/");
	if(kind==1)for(int i=strlen(ch)-1;i>=fir2;i--)printf("%c",ch[i]);
	if(kind==2)for(int i=fir2;i>=k+1;i--)printf("%c",ch[i]);
	printf("\n");
}
リリース8元の記事 ウォンの賞賛1 ビュー326

おすすめ

転載: blog.csdn.net/weixin_42921101/article/details/104309613