#5371: 可以教我ㄧ些C++程式碼嗎???


qqqaaa830107 (ALEX)

學校 : 國立臺灣科技大學
編號 : 16015
來源 : [140.118.233.95]
最後登入時間 :
2014-06-11 00:03:43
d124. 3的倍数 | From: [203.71.186.192] | 發表日期 : 2011-07-15 11:05

就是

每次遇到

這種題目 我就不知道如何下手

誰可以告訴我

例如說

輸入 56556

程式該如何寫才能 讓

第一個數5 +  第二個數6 + 第三個數5 + 第四個數5 + 第六個數6

這樣就會等於 5+6+5+5+6 = 27

可以說一下C++程式碼各位都是如何打的嗎?

 
#5372: Re:可以教我ㄧ些C++程式碼嗎???


example (學姊)

學校 : 臺北市立麗山高級中學
編號 : 6634
來源 : [60.250.138.144]
最後登入時間 :
2022-08-09 17:07:42
d124. 3的倍数 | From: [111.250.69.242] | 發表日期 : 2011-07-15 14:38

就是

每次遇到

這種題目 我就不知道如何下手

誰可以告訴我

例如說

輸入 56556

程式該如何寫才能 讓

第一個數5 +  第二個數6 + 第三個數5 + 第四個數5 + 第六個數6

這樣就會等於 5+6+5+5+6 = 27

可以說一下C++程式碼各位都是如何打的嗎?

大概有兩種方法吧

1. 將 56556 視為一個整數,利用迴圈每次對他做 mod 運算 (取 10 的餘數) 

2. 將 56556 視為一個字串 str,用迴圈取出 str 的每個字元 (str[i] - '0' )

其中第二種方法比第一種方法快很多 (mod 運算非常耗時) 

 
#5373: Re:可以教我ㄧ些C++程式碼嗎???


grd (保持好奇心)

學校 : 臺中市私立明道高級中學
編號 : 18826
來源 : [140.113.207.250]
最後登入時間 :
2019-01-21 21:20:44
d124. 3的倍数 | From: [69.22.184.40] | 發表日期 : 2011-07-15 16:25

大概有兩種方法吧

1. 將 56556 視為一個整數,利用迴圈每次對他做 mod 運算 (取 10 的餘數) 

2. 將 56556 視為一個字串 str,用迴圈取出 str 的每個字元 (str[i] - '0' )

其中第二種方法比第一種方法快很多 (mod 運算非常耗時)


我大部分都用第二種,雖然第一種比較直觀=_=

第一種方法:  (放到integer陣列中,但是是反向放入 a[1]=6 a[2]=5 a[3]=5....etc)

temp:=56556;len:=0;
while temp<>0 do begin
    inc(len);
    a[len]:=temp mod 10;
    temp:=temp div 10;
end;

第二種方法: (轉換成str,然後放入char or integer陣列)

temp:=56556;len:=0;
str(temp,st);
for run:=1 to length(st) do begin
    str(st[run],sttemp);   //把第run位數變成char 或是 string;
    val(sttemp,a[run]);   //把 char 或是 string 換成數值後放入陣列
end;

 

第一種方法要注意就是
取出後是由低位到高位,並且只支援到 unsigned long long int

第二種方法則是
取出後由高位到低位(當然也可以改成低位到高位) 而數字不限制在insigned long long int
只跟 陣列可以開到多大有關

 

希望有幫到你...

 
#5376: Re:可以教我ㄧ些C++程式碼嗎???


qqqaaa830107 (ALEX)

學校 : 國立臺灣科技大學
編號 : 16015
來源 : [140.118.233.95]
最後登入時間 :
2014-06-11 00:03:43
d124. 3的倍数 | From: [203.71.186.182] | 發表日期 : 2011-07-15 18:37

 

temp:=56556;len:=0;
str(temp,st);
for run:=1 to length(st) do begin
    str(st[run],sttemp);   //把第run位數變成char 或是 string;
    val(sttemp,a[run]);   //把 char 或是 string 換成數值後放入陣列
end;

 

 

 

不好意思....我真的很想學第二種方法

但是小弟C++真的不是很強

不知道程式碼能不能打的比較簡單一點...抱歉ˊˋ

 
#5377: Re:可以教我ㄧ些C++程式碼嗎???


qqqaaa830107 (ALEX)

學校 : 國立臺灣科技大學
編號 : 16015
來源 : [140.118.233.95]
最後登入時間 :
2014-06-11 00:03:43
d124. 3的倍数 | From: [203.71.186.182] | 發表日期 : 2011-07-15 18:43

 

temp:=56556;len:=0;
str(temp,st);
for run:=1 to length(st) do begin
    str(st[run],sttemp);   //把第run位數變成char 或是 string;
    val(sttemp,a[run]);   //把 char 或是 string 換成數值後放入陣列
end;

 

 

 

不好意思....我真的很想學第二種方法

但是小弟C++真的不是很強

不知道程式碼能不能打的比較簡單一點...抱歉ˊˋ

 

 其實我有自己試試看但是加不起來 方便的話可以幫我看看嗎:D

 

#include <cstdlib>
#include <iostream>
#include <math.h>
using namespace std;

int main()
{
   

   string temp = "56556";
   int c = 0 ;
   for (int i = 0 ; i<6 ; i+=1)
    {
   
    c =c + temp[i];
 cout << c << endl ;  
}
    system("PAUSE");
    return 0;
}



 

 
ZeroJudge Forum