iT邦幫忙

1

D13. 學習基礎C、C++語言

c
  • 分享至 

  • xImage
  •  

D13. 基礎題3n+1跟進階3n+1(Uva100)

3n+1是很基本的練習題目,題目大致上是輸入一個數n,如果為奇數則3n+1,若為偶數則n/2,所以步驟大概是

  1. 輸入數字
  2. 判斷奇偶
  3. 若為奇數*3+1,為偶數/2
  4. 重複第2、3步驟直到數字為1
#include <stdio.h>
#include <stdlib.h>

int main()
{   
  int n;
  while(scanf("%d",&n)!=EOF){
	     while(n!=1){
           if(n%2==1){
	         n=3*n+1; 
           printf("%d ",n);
           }
           else{
  	     n=n/2;
  	     printf("%d ",n);
	         }
		 }
	printf("\n");
	}
  return 0;
}

進階題(uva100)

#include<stdio.h>
#include<stdlib.h>

main()
{
 int a,x,y,n,i,j,count,max;
 while(scanf("%d %d",&i,&j)!=EOF)
 { count=1;max=1;
   if(i>j)
    {
      printf("%d %d ",i,j);
      x=i;
      i=j;
      j=x;
    }
    else
      printf("%d %d ",i,j);
   for(a=i;a<=j;a=a+1)
    {
     n=a;count=1;
     while(n!=1){
        if(n%2==1)
            {
			n=n*3+1;
            count=count+1; }
        else
            {
			n=n/2;
            count=count+1; }}
      if(count>max) {max=count;}
    }
   printf("%d\n",max);
 }
 return 0;
}

這裡我是先判斷兩數大小然後再用迴圈開始一個一個判斷,最後在看新得到的count有沒有比max大,需不需要取代掉,最後再print結果


圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言