PTA 2025 Reference Code for C Language Exercises 1-26 to 1-50

1-26 【0408】Odd Numbers (Part Two)

#include<stdio.h>// Code - Junhua
int main(){
    int n;
    if(scanf("%d",&n) != 1) return 1;
    for(int i=1; i<=n*2-1; i+=2)
    {
        if(i>1) printf(",");
        printf("%d",i);
    }
    return 0;
}

1-27 【0409】Integer Reversal

#include<stdio.h>// Code - Junhua
#include<string.h>
int main(void){
    char n[20];
    if(scanf("%s",n) != 1) return 1;
    int len = strlen(n);
    for(int i=len-1; i>=0; i--)
    {
        printf("%c",n[i]);
    }
    return 0;
}

1-28 【0410】Integer Reversal (Part Two)

#include<stdio.h>// Code - Junhua
int main(void){
    long long n,m=0;
    if(scanf("%lld",&n) != 1) return 1;
    while(n != 0)
    {
        m = m*10+n%10;
        n /= 10;
    }
    printf("%lld",2*m);
    return 0;
}

1-29 【0411】Fibonacci Sequence

#include<stdio.h>// Code - Junhua
int main(void){
    long long a=0,b=1;
    long long n;
    if(scanf("%lld",&n) != 1) return 1;
    while(a<=n)
    {
        if(a!=0) printf(" ");
        printf("%lld",a);
        b = b+a;
        a = b-a;
    }
    return 0;
}

1-30 【0412】Fibonacci Sequence (Part Two)

#include<stdio.h>// Code - Junhua
int main(void){
    long long m,n;
    long long a=0,b=1;
    int button=0;
    if(scanf("%lld %lld",&m,&n) != 2) return 1;
    while(a<=n)
    {
        if(a>=m)
        {
            if(button == 1) printf(" ");
            printf("%lld",a);
            button = 1;
        }
        b = b+a;
        a = b-a;
    }
    return 0;
}

1-31 【0413】Collatz Conjecture

#include<stdio.h>// Code - Junhua
int main(void){
    long long n; // Using int may cause timeout
    int i;
    if(scanf("%lld",&n) != 1) return 1;
    for(i=0; n!=1; i++)
    {
        if(n%2 == 0) n/=2;
        else n = n*3+1;
    }
    printf("%d",i);
    return 0;
}

1-32 【0414】Sum of Integers (Part Three)

#include<stdio.h>// Code - Junhua
int main(void){
    long long m,n,result=0;
    if(scanf("%lld %lld",&m,&n) != 2) return 1;
    for(int i=m; i<=n; i++)
        result += i;
    printf("%lld",result);
    return 0;
}

1-33 【0415】Factorial (Part Three)

#include<stdio.h>// Code - Junhua
int main(void){
    int m,n;
    long long result=1;
    if(scanf("%d %d",&m,&n)!=2) return 1;
    for(int i=1; i<=n; i++)
    {
        result *= i;
        if(i>=m) printf("%d! = %lld\n",i,result);
    }
    return 0;
}

1-34 【0416】Sum of Factorials

#include<stdio.h>// Code - Junhua
int main(void){
    int n;
    if(scanf("%d",&n)!=1) return 1;
    long long N=1,sum=0;
    for(int i=1; i<=n; i++)
    {
        N *= i;
        sum += N;
    }
    printf("%lld",sum);
    return 0;
}

1-35 【0417】Fibonacci Sequence

#include<stdio.h>// Code - Junhua
int main(void){
    int n;
    long long a=0,b=1;
    if(scanf("%d",&n) != 1) return 1;
    for(int i=1; i<=n; i++)
    {
        if(i>1) printf(" ");
        printf("%lld",a);
        b = b+a;
        a = b-a;
    }
    return 0;
}

1-36 【0418】Fibonacci Sequence (Part Four)

#include<stdio.h>// Code - Junhua
int main(void){
    int m,n;
    long long a=0,b=1;
    if(scanf("%d %d",&m,&n) != 2) return 1;
    for(int i=1; i<=n; i++)
    {
        if(i>=m)
        {
            printf("%lld",a);
            if(i!=n) printf("\n");
        }
        b = b+a;
        a = b-a;
    }
    return 0;
}

1-37 【0501】Swap Two Numbers

#include<stdio.h>// Code - Junhua
int main(void){
    int m,n;
    if(scanf("%d %d",&m,&n) != 2) return 1;
    int big = (m>n) ? m:n;
    int small = (m<n) ? m:n;
    printf("%d - %d = %d",big,small,big-small);
    return 0;
}

1-38 【0502】Distance Between Two Points

#include<stdio.h>// Code - Junhua
#include<math.h>
struct P {double x,y; }; // Semicolon after braces.
int main(void){
    struct P p1,p2;
    if(scanf("%lf,%lf\n%lf,%lf",&p1.x,&p1.y,&p2.x,&p2.y) != 4) return 1;
    double distance = sqrt((p1.x-p2.x)*(p1.x-p2.x)+(p1.y-p2.y)*(p1.y-p2.y));
    printf("%.6f",distance);
    return 0;
}

1-39 【0503】Area of Triangle

#include<stdio.h>// Code - Junhua
#include<math.h>
struct P {double x,y; };
int main(void){
    struct P p1,p2,p3;
    if(scanf("%lf,%lf\n%lf,%lf\n%lf,%lf",&p1.x,&p1.y,&p2.x,&p2.y,&p3.x,&p3.y) != 6) return 1;
    double l12 = sqrt((p1.x-p2.x)*(p1.x-p2.x)+(p1.y-p2.y)*(p1.y-p2.y));
    double l13 = sqrt((p1.x-p3.x)*(p1.x-p3.x)+(p1.y-p3.y)*(p1.y-p3.y));
    double l23 = sqrt((p2.x-p3.x)*(p2.x-p3.x)+(p2.y-p3.y)*(p2.y-p3.y));
    double s = (l12+l13+l23)/2;
    double area = sqrt(s*(s-l12)*(s-l13)*(s-l23));
    printf("%.6f",area);
    return 0;
}

1-40 【0504】Circumference and Area of Circle

#include<stdio.h>// Code - Junhua
#define PI 3.141592653589793
int main(void){
    double r;
    if(scanf("%lf",&r) != 1) printf("data error");
    printf("%lf\n%lf",2*PI*r,PI*r*r);
    return 0;
}

1-41 【0505】Volume of Sphere

#include<stdio.h>// Code - Junhua
#define PI 3.141592653589793
int main(void){
    double r;
    if(scanf("%lf",&r) != 1) printf("d error");
    printf("%.6f",PI*r*r*r*4/3);
    return 0;
}

1-42 【0506】Disk Capacity

#include<stdio.h>// Code - Junhua
int main(void){
    float size;
    if(scanf("%f",&size) != 1) return 1;
    printf("%.3f",size*1000*1000*1000/1024/1024/1024);
    return 0;
}

1-43 【0507】Screen Parameters

#include<stdio.h>// Code - Junhua
#include<math.h>
int main(void){
    double size, width, height, ppi, x, y, pd;
    char xx;
    if(scanf("%lf\n%lf%c%lf",&size,&width,&xx,&height) != 4) printf("001");
    ppi = sqrt(width*width+height*height)/size;
    x = width/ppi*2.54;
    y = height/ppi*2.54;
    pd = x/width*10;
    printf("%.1f\n%.1f\n%.1f\n%.3f",ppi,x,y,pd);
    return 0;
}

1-44 【0508】Personal Income Tax

#include<stdio.h>// Loop solution. Junhua
int main(){
    float n,revenue=0;
    if(scanf("%f",&n) != 1) return 1;
    // Define thresholds for each income bracket
    int money[5] = {1600,2100,3600,6600,11600};
    // Define corresponding tax rates
    float ratio[5] = {0.05,0.1,0.15,0.2,0.3};
    // Calculate from the highest income bracket downwards (reverse loop)
    for(int i=4; i>=0; i--)
    {
        if(n>money[i])  // If current income exceeds a threshold
        {
            // Calculate tax on the excess: (current income - threshold) * corresponding tax rate
            revenue+=(n-money[i])*ratio[i];
            // Update income to threshold for next calculation
            n=money[i];
        }
    }
    printf("%.2f",revenue);
    return 0;
}

1-45 【0509】Personal Income Tax (Part Two)

#include<stdio.h>// Empty loop replaces if-elseif structure Junhua
int main(void){
    double n,m=0;
    double ratio[5] = {0.05,0.1,0.15,0.2,0.3}; // Using float here may cause precision issues for maximum value.
    int money[5] = {1600,2100,3600,6600,11600}, revenue[5] ={0,25,175,625,1625};
    if(scanf("%lf",&n) != 1) return 1;
    int i;
    for(i=4; n<revenue[i]; i--) {} // Empty loop, only used to find satisfying i
    m=(n-revenue[i])/ratio[i]+money[i];
    printf("%.2f",m);
    return 0;
}
#include<stdio.h>// Standard if-elseif structure Junhua
int main(){
    double n,m=0;
    scanf("%lf",&n);
    if(n<=25) m=n/0.05;
    else if(n<=175) m=(n-25)/0.1+500;
    else if(n<=625) m=(n-175)/0.15+2000;
    else if(n<=1625) m=(n-625)/0.2+5000;
    else m=(n-1625)/0.3+10000;
    printf("%.2f",m+1600);
    return 0;
}

1-46 【0510】Multiplication Table

#include<stdio.h>// Code - Junhua
int main(void){
    int n;
    if(scanf("%d",&n) != 1) return 1;
    for(int a=1; a<=n; a++)
    {
        for(int b=1; b<=n; b++)
        {
            if(b != 1) printf("\t");
            printf("%dX%d=%d",b,a,a*b);
        }
        printf("\n");
    }
    return 0;
}

1-47 【0511】Multiplication Table (Part Two)

#include<stdio.h>// Code - Junhua
int main(void){
    int n;
    if(scanf("%d",&n) != 1) return 1;
    for(int a=1; a<=n; a++)
    {
        for(int b=1; b<=a; b++)
        {
            printf("%dX%d=%d",b,a,a*b);
            printf("\t");
        }
        printf("\n");
    }
    return 0;
}

1-48 【0513】Series Summation

#include<stdio.h>// Code - Junhua
int main(void){
    int n;
    double s=0;
    if(scanf("%d",&n) != 1) return 1;
    for(int i=1; i<=n; i++) {s += (1.0/i);} // At least one of the numerator or denominator must be a floating point number.
    printf("%.15f",s);
    return 0;
}

1-49 【0601】Narcissistic Numbers

#include<stdio.h>// Code - Junhua
int main(void){
    for(int i=1; i<=9; i++)
    {
        for(int j=0; j<=9; j++)
        {
            for(int k=0; k<=9; k++)
            {
                int n= 100*i+10*j+k;
                if(i*i*i+j*j*j+k*k*k == n) printf("%d\n",n);
            }
        }
    }
    return 0;
}

1-50 【0602】Number of Digits in Integer

#include<stdio.h>// Code - Junhua
int main(void){
    int n,i;
    if(scanf("%d",&n) != 1) return 1;
    for(i=0; n!=0; i++) {n /= 10;}
    printf("%d",i);
    return 0;
}

Leave a Comment