Mặc định Bài toán tính tổng các chữ số trong dãy n số liên tiếp từ 1 tới n

Cho số nguyên dương n, người ta viết các số nguyên liên tiếp từ 1 tới n trong hệ thập phân để tạo ra 1 dãy các chữ số. Tính tổng các chữ số của dãy.

Input
Một số n duy nhất (n <= 10^100)

Output
Số nguyên duy nhất là kết quả tìm được

Example

Input:
3
Output:
6

Input
20
Output
102

Ai giúp mình thuật toán hoặc công thức tính cái tổng này với.
Thanks mọi người trước!
clap_grin.gif
 
  • Chủ đề
    cách cần chế chi cho của hay images kết liên mọi nhất sử dụng trong với
  • Ðề: Mặc định Bài toán tính tổng các chữ số trong dãy n số liên tiếp từ 1 tới n

    biết chết liền ^^
     
    Ðề: Mặc định Bài toán tính tổng các chữ số trong dãy n số liên tiếp từ 1 tới n

    Đây là cách giải của mình, bạn tham khảo thử nha! Cho iput là n, gán 1 biến tạm = 0, sử dụng vòng lặp i từ i=0 đến i <=n, trong vòng lặp gán tạm=tạm+n. kết quả sau vòng lặp, tạm chính là output cần tìm.
     
    Ðề: Mặc định Bài toán tính tổng các chữ số trong dãy n số liên tiếp từ 1 tới n

    À, mà tổng các số nguyên dương từ 1 đến 20 là 210 chứ k phải 102 đâu bạn? :yy107:
     
    Ðề: Mặc định Bài toán tính tổng các chữ số trong dãy n số liên tiếp từ 1 tới n

    Sr! k để ý! gán tạm = tạm +i; hic :yy51:
     
    Ðề: Mặc định Bài toán tính tổng các chữ số trong dãy n số liên tiếp từ 1 tới n

    thuật toán zi chậm lém.vòng lap thực hiện tới n lần. mình có thuật toán này:
    int sum(int n)
    {
    return n*(n+1)/2;
    }
     
    Ðề: Mặc định Bài toán tính tổng các chữ số trong dãy n số liên tiếp từ 1 tới n

    Hi, cách của bạn rất hay! Thanks!
     
    Ðề: Mặc định Bài toán tính tổng các chữ số trong dãy n số liên tiếp từ 1 tới n

    thuật toán ngắn đó :yy207:
     
    Ðề: Mặc định Bài toán tính tổng các chữ số trong dãy n số liên tiếp từ 1 tới n

    hem có chi. :yy193:
     
    Ðề: Mặc định Bài toán tính tổng các chữ số trong dãy n số liên tiếp từ 1 tới n

    Bài này yêu cầu tính tổng các chữ số từ 1 tới n mà chứ đâu phải tính tổng các số từ 1 tới n đâu. Input 20 cho Output là 102 vì:
    1+2+3+4+5+6+7+8+9+1+0+1+1+1+2+1+3+1+4+1+5+1+6+1+7+1+8+1+9+2+0= 102.:yy23:
     
    Ðề: Mặc định Bài toán tính tổng các chữ số trong dãy n số liên tiếp từ 1 tới n

    oh! k để ý! :yy107: Sr!
     
    Ðề: Mặc định Bài toán tính tổng các chữ số trong dãy n số liên tiếp từ 1 tới n

    ít người học lập trình nhỉ. có mấy bài thế này thui ah hjx
     
    Ðề: Mặc định Bài toán tính tổng các chữ số trong dãy n số liên tiếp từ 1 tới n

    Đây là bài giải :
    {________________________________}
    PROGRAM Tong_chu_so;
    USES crt;
    VAR
    temp,Skq,num,t:STRING;
    r,tmp,i:BYTE;
    code:INTEGER;
    a,dv:ARRAY[1..19] OF STRING;
    PROCEDURE Init;
    BEGIN
    write('Nhap vao so : ');readln(num);
    a[1]:='46';a[2]:='901';a[3]:='13501';a[4]:='180001';a[5]:='2250001';
    a[6]:='27000001';a[7]:='315000001';a[8]:='3600000001';a[9]:='40500000001';
    a[10]:='450000000001';a[11]:='4950000000001';a[12]:='54000000000001';a[13]:='585000000000001';
    a[14]:='6300000000000001';a[15]:='67500000000000001';a[16]:='720000000000000001';
    a[17]:='7650000000000000001';a[18]:='81000000000000000001';a[19]:='855000000000000000001';
    dv[1]:='1';dv[2]:='3';dv[3]:='6';dv[4]:='10';dv[5]:='15';dv[6]:='21';dv[7]:='28';dv[8]:='36';dv[9]:='45';
    END;
    FUNCTION Sum(a,b:STRING):STRING;
    VAR
    x,y,d,top,tmp,k:SHORTINT;
    t:STRING;
    BEGIN
    IF length(b)>length(a) THEN BEGIN t:=b;b:=a;a:=t; END;
    insert('0',a,1);
    top:=length(a);d:=0; k:=length(a)-length(b);
    REPEAT
    Val(a[top],x,code);
    IF top<=k THEN y:=0
    ELSE Val(b[top-k],y,code);
    tmp:=x+y+d;
    IF tmp>9 THEN BEGIN d:=tmp DIV 10; tmp:=tmp MOD 10; END
    ELSE d:=0;
    str(tmp,t);a[top]:=t[1];Dec(top);
    UNTIL (d=0) AND (top<k);
    Sum:=a;
    END;
    FUNCTION Mul(a,b:STRING):STRING;
    VAR
    d,x,top,tmp,y:BYTE;
    t,out:STRING;
    BEGIN
    IF length(b)>length(a) THEN BEGIN t:=b;b:=a;a:=t; END;
    top:=length(a);d:=0;Val(b,y);Out:='';
    REPEAT
    val(a[top],x);
    tmp:=x*y+d;str(tmp,t);
    IF top=1 THEN insert(t,Out,1)
    ELSE
    BEGIN
    IF length(t)>1 THEN BEGIN d:=tmp DIV 10; delete(t,1,1);END
    ELSE d:=0;
    insert(t,Out,1);
    END;
    Dec(top);
    UNTIL top=0;
    Mul:=Out;

    END;
    BEGIN
    clrscr;
    Init; skq:='';
    Val(num[length(num)],r,code);
    IF r>0 THEN skq:=dv[r];
    FOR r:=length(num)-1 DOWNTO 1 DO
    IF num[r]<>'0' THEN
    BEGIN
    IF num[r]='1' THEN skq:=sum(skq,a[length(num)-r])
    ELSE
    BEGIN
    Val(num[r],tmp,code);
    t:=dv[tmp-1];
    FOR i:=1 TO length(num)-r DO t:=t+'0';
    Skq:=Sum(skq,Sum(Mul(num[r],a[length(num)-r]),t));

    END;
    skq:=Sum(skq,Mul(num[r],copy(num,r+1,length(num)-r)));
    END;
    i:=1; WHILE skq[1]='0' DO delete(skq,1,1);
    writeln(skq);
    readln
    END.
     
    Ðề: Mặc định Bài toán tính tổng các chữ số trong dãy n số liên tiếp từ 1 tới n

    Nữ ma giỏi lập trình PC nhỉ, khâm phục :) làm wen nhé, YM: namdinh343
     
    Ðề: Mặc định Bài toán tính tổng các chữ số trong dãy n số liên tiếp từ 1 tới n

    thằng em nó viết
     
    Ðề: Mặc định Bài toán tính tổng các chữ số trong dãy n số liên tiếp từ 1 tới n

    chẳng hiểu chủ thớt đang nói gì :|
     

    Thống kê

    Chủ đề
    102,787
    Bài viết
    470,609
    Thành viên
    340,593
    Thành viên mới nhất
    winspire
    Top