루오 구 P1553- * 자리 반전 업그레이드 버전 [문자열] 분류 토론

질문의 의미 :

숫자를 감안할 때, 새로운 번호의 각 비트를 반전시킨 디지털 번호하시기 바랍니다.

그룹 및 NOIp2011 첫 번째 질문의 인기는 다른 :이 숫자가 소수, 분수, 백분율, 정수가 될 수 있습니다. 분수 반전 반전 분모되고, 그 후, 상기 정수 부분과 소수 부분을 교환하지 않고 분별 반전 반전의 수의 반전 후 소수부의 정수 부분이다 반전 모든 비트 교환 정수인 반전의 분자수는, 분자와 분모를 교환 할 수없는, 분자의 퍼센트는 정수의 변화율 만 디지털 부이어야한다. 새로운 정수는 달리 제로이어야한다 새로운 숫자의 높은 자리를 반전시킨 오리지널 번호를 부여하지 않는 제로 정수의 일반적인 형태를 충족한다 새로운 진수의 단부 (0 아닌 소수부를 제외 숫자 0에 다른 추가 아니, 다음) 만 0을 유지, 분자와 분모에 대해 점수를하지 않는 것은 아닙니다 진수 (약 물방울 신발 죄송합니다, 너무 오 입력 데이터) 분모가 0이 아닌 것을 확인하기 위해,이하지 않습니다. 음.

이제 번호가 부여, 디지털의 수는 새 번호의 각 비트를 반전시킨하시기 바랍니다.

그룹 및 NOIp2011 첫 번째 질문의 인기는 다른 :이 숫자가 소수, 분수, 백분율, 정수가 될 수 있습니다.

정수 역 스왑은 모든 디지털이다.

반전의 십진 정수 부분은 정수 부분과 소수 부분을 교환하지 않고, 반전의 수가 그 소수 부분을 반전된다.

점수 반전 분모 분자와 분모를 교환하지 않고, 다음 분자수가 반전, 반전된다.

분자의 비율은 정수, 비율 변화에만 디지털 섹션해야합니다.

입력 포맷
번호 SS

출력 형식
번호의 반전, 즉 SS의 수가

샘플 입력 출력
입력 # 1 복제
5,087,462
출력 1 복제
2,647,805
입력 복사 2
600.084
출력 # 2 복사
6.48
입력 # 3 복제
27분의 700
출력 # 3 복사
72분의 7
입력 # 4에 복사
8천6백70%의
출력 복사 # 4
7백68퍼센트을
설명 / 팁
모든 데이터 : 25 %의은 크지 (20)보다 정수

의 25 %는 소수 부분, 정수 및 분수 부분 (10)보다 큰

25 % (S)는 분자와 분모는 10보다 큰, 일부인

25 %의 퍼센트로, 19 개 이하의 분자 큰

(데이터 20)

데이터 보증 :

정수 플립 들어, 그렇지 않으면 새로운 원래 숫자의 높은 자리 숫자를 반전시킨 오리지널 번호 부여 제로가 아니면 원문 정수 새로운 정수 정수 충족 일반적인 형태의 수는 제로이어야한다.

진수 플립, 위의 섹션에서 소수점 뒤에 소수점 앞의 폼의 경우,의 끝이 아니다 소수의 충족 일반적인 형태를 보장하기 위해 여분의 00의 소수 부분이 다른 번호가없는 것을 제외하고 00 (만 11 00 만약을 유지 00의 끝에서 반전 번호가 나타납니다 후, 생략는 00 이중화)

점수 플립의 경우, 점수 포인트가 아닌 분자와 분수의 분모에 대해 없습니다. 분모가 0이 아닌 입력합니다. 정수의 관련 규정은 위 참조 플립.

플립 비율 용어를 들어, 정수 플립 관련 콘텐츠를 참조하십시오.

부정적인 데이터가 존재하지 않습니다.

해결 방법 :

사가지 경우 총으로 나누어, 정수, 소수, 분수, 백분율, 우리는이 그림의 유형을 감지 할 필요가, 당신은 퍼센트 기호를 수행 숫자뿐만 아니라, \ 0, 소수점 발생 스위핑의 가장 왼쪽 숫자에서 시작할 수 있습니다 루프, 상기 마크의 마킹 위치를 벗어난 후.
그것은 대부분은 왼쪽에서 오른쪽으로 스위핑부터 시작하는 정수이면 1, 제 아닌 숫자 0, 0만을 출력하는 경우를 찾는 모두 제로, 그렇지 않으면 제 1 리버스 디지털 출력에서 시작하는 영이 아닌
가있는 경우 (2) 경계, 좌측 반복 스텝 (1)의 정수 부분으로서 소수점 소수점은, 소수의 소수점의 오른쪽이 제 비제 번호, 마찬가지로 사실 1 찾을 오른쪽 스위핑
스코어 인 경우, 3, 플립과 같은 2 가지 방법 겉보기 하지만 거대한 구덩이 권리 정수 프로그램에 따라 반대한다 디지털 부문의 기호가 아니라 소수 프로그램의 역이다,있다. 동작은 피트를 떠나 직접 복사 2 인 경우 (예 : 플립 21/31 130분의 120처럼)
비율 인 경우, 일반적인 생각과 동일 하나, 최종 출력 캔 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");
}
출시 팔 개 원래 기사 · 원 찬양 한 · 전망 (326)

추천

출처blog.csdn.net/weixin_42921101/article/details/104309613