SWUST学校OJ

1002,水仙花数,题目链接:https://www.oj.swust.edu.cn/problem/show/1002

#include <stdio.h>
#include <string.h>
int main()
{
	int m,n,i,a,b,c,d,e=0;
	int f[10],j=0;
	while(scanf("%d %d",&m,&n)!=EOF)
	{
		j=0;
		if(m==0&&n==0)
			break;
		else
		{
			for(i=m; i<=n; i++)
			{
				a=i/100;
				b=i%100/10;
				c=i%100%10;
				d=a*a*a+b*b*b+c*c*c;
				if(d==i)
				{
					f[j]=i;
					j++;

				}//数据放到数组中

			}
			if(j==0)
				printf("no\n");
			else
			{
				for(i=0; i<j-1; i++)
					printf("%d ",f[i]);
				printf("%d\n",f[i]);

			}
		}

	}
	return 0;
}

1003, 你来做裁判,题目链接:https://www.oj.swust.edu.cn/problem/show/1003

#include <stdio.h>
#include <string.h>
int main()
{
    int N,num[1001],t=0,i,j;
    char ID[1001][40],c[40];
    scanf("%d",&N);
    getchar();
    for(i=0;i<N;i++)
    scanf("%s %d",ID[i],&num[i]);
    for(j=0;j<N;j++)
       for(i=0;i<N-1-j;i++)
       {
        if(num[i]>num[i+1])
        {
            t=num[i];
            num[i]=num[i+1];
            num[i+1]=t;
            strcpy(c,ID[i]);
            strcpy(ID[i],ID[i+1]);
            strcpy(ID[i+1],c);
           }
       }
       for(i=0;i<N-1;i++)
       printf("%s %d\n",ID[i],num[i]);
       printf("%s %d",ID[i],num[i]);
       return 0;
 }

1004,分花生游戏博弈论,题目链接:https://www.oj.swust.edu.cn/problem/show/1004

#include<stdio.h>
int main()
{  
    int m,n;  
    while(scanf("%d %d",&m,&n)!=EOF)
    {   
     
    if(m%5==0||m%5==4||m%5==1||n%5==1||n%5==4||n%5==0)//找出谭顺华老师的必胜数字。   
    printf("No\n");  
     
    else   
    printf("Yes\n");
     
    } 
    return 0;
}

1007,钻石问题,题目链接:https://www.oj.swust.edu.cn/problem/show/1007

#include <stdio.h>
int main()
{
    int v,e,mian;
    while(scanf("%d %d",&v,&e)!=EOF)//m为顶点数 n为棱数
    {
        mian=2+v-e;
        printf("%d\n",mian);
     } 
    return 0;
 }

1008,素数问题,题目链接:https://www.oj.swust.edu.cn/problem/show/1008

#include <stdio.h>
#include <string.h>
#include <math.h>
int main()
{
    int t;
    long int n;
    unsigned long long m,i;
    scanf("%d",&t);
    while(t--)
    {
        scanf("%llu",&m);
        if(m==1)
        printf("No\n");
        else
        {
        for(i=2;i*i<m;i++)
        {
            n=m%i;
            if(n==0)
            break;
        }
        if(i*i<m)
        printf("No\n");
        else
        printf("Prime\n");
    }
    }
    //printf("%ld %ld %llu",i,n,m);
    return 0;
}

1009,进制转化,题目链接:https://www.oj.swust.edu.cn/problem/show/1009

暴力解法(来自某队友的思路)

#include <stdio.h>
#include <stdlib.h>
  
int main()
{
    int N,R,i,j,a[100];
    while(scanf("%d%d",&N,&R)!=EOF)
    {
        i=0;
        if(N==0&&R==0)
        {
            break;
        }
        else if(N==0&&R!=0)
        {
            printf("0");
        }
        if(R<=9)
        {
            while(N)
            {
                if(N>0)
                {
                    a[i]=N%R;
                    i++;
                    N/=R;
                }
                else
                {
                    printf("-");
                    N*=-1;
                    a[i]=N%R;
                    i++;
                    N/=R;
                }
            }
            j=sizeof(a);
            for(j=i-1; j>=0; j--)
            {
                printf("%d",a[j]);
            }
            printf("\n");
        }
        else if(R>9)
        {
            while(N)
            {
                a[i]=N%R;
                i++;
                N/=R;
            }
            for(j=i-1; j>=0; j--)
            {
                switch(a[j])
                {
                case 10:
                    printf("A");
                    break;
                case 11:
                    printf("B");
                    break;
                case 12:
                    printf("C");
                    break;
                case 13:
                    printf("D");
                    break;
                case 14:
                    printf("E");
                    break;
                case 15:
                    printf("F");
                    break;
                default:
                    printf("%d",a[j]);
                    break;
                }
                if(j==0)
                {
                    printf("\n");
                }
            }
        }
    }
    return 0;
}

1012: A Simple Task题目链接:https://www.oj.swust.edu.cn/problem/show/1012

#include <stdio.h>
#include <string.h>
int main()
{
    int n,i=0,len,j;
    char m[100][60];
    while(scanf("%s",m[i])!=EOF)
    {
        if(m[i][0]=='#')
        break;
        else
        len=strlen(m[i]);
        printf("%c",m[i][0]);
        for(j=1;j<len;j++)
        {
            if(j%2!=0)
            m[i][j]-=32;
         }
         for(j=1;j<len;j++)
         printf("%c",m[i][j]);
         printf("\n");
         i++; 
    }
    return 0;
}

1013: Part-time Job     题目链接:https://www.oj.swust.edu.cn/problem/show/1013   

#include <stdio.h>
int main()
{
    int m,n,p;
    while(scanf("%d %d %d",&m,&n,&p)!=EOF)
    {
        if(m==0&&n==0&&p==0)
        break;
        else if(m>n*p) 
        printf("%d\n",m);
        else
        printf("%d\n",n*p);
    }
    return 0;
}

1014,两数相加的输入输出,题目链接:https://www.oj.swust.edu.cn/problem/show/1014

#include"stdio.h"   
int main()
{
    int a,b;
    while(scanf("%d %d", &a,&b) != EOF) ///EOF:end of file  文件结束标志
    {
        if(a==0 && b==0)
            break;
        printf("%d\n", a+b);
    }
    return 0;
}

1015,两数相加的输入输出,题目链接:https://www.oj.swust.edu.cn/problem/show/1015

#include"stdio.h" 
int main()
{
    int testcases;
    int n,x,sum;
    scanf("%d", &testcases);
    while(testcases--)
    {
        scanf("%d", &n);
        sum = 0;
        while(n--)
        {
            scanf("%d", &x);
            sum += x;
        }
        printf("%d\n", sum);
        printf("\n");
    }
    return 0;
}

1017, 牛人的题目,位运算,题目链接:https://www.oj.swust.edu.cn/problem/show/1017

#include <stdio.h>
#include <stdlib.h>
 
int main()
{
    int a, i = 0, N, b;
    while(scanf("%d", &N) != EOF)
    {
        if(!N)
        break;
        i = 0, b = 0;
        for(i = 0; i < N; i++)
        {
            scanf("%d", &a);
            b = b^a;
        }
        printf("%d\n", b);
    }
 
}
#include <iostream>
using namespace std;
int main()
{
    int ans = 0;
    int k = 0, n = 0;
    while(cin>>n)
    {
        ans = 0, k = 0;
        if( !n)
        break;
        while(n--)
        {
            cin >> k;
            ans = ans^k;
        }
        printf("%d\n",ans);
    }
}
#include <stdio.h>
int main()
{
    int ans = 0;
    int a = 0, n = 0, x = 0;
    while(scanf("%d",&n) != EOF)
    {
        x = 0, a = 0;
        if(n == 0)
        break;
        while(n--)
        {
            scanf("%d",&a);
            x = x^a;
        }
        printf("%d\n",x);
    }
}

1020,猴子吃桃,题目链接:https://www.oj.swust.edu.cn/problem/show/1020

#include <stdio.h>
int main()
{
    int n,a,i,N;
    while((scanf("%d",&n))!=EOF)
    {
        if(n==0)
        break; 
        N=1;
    for(i=1;i<n;i++)
    {
    N=(N+1)*2;
    }
    printf("%d\n",N);
    } 
    return 0;
}

1021,简单的排序算法,题目链接:

https://www.oj.swust.edu.cn/problem/show/1021

 

#include <stdio.h>
int main()
{
    int n,a[1000][3],i,j,t;
    scanf("%d",&n);
    for(i=0;i<n;i++)
    scanf("%d %d %d",&a[i][0],&a[i][1],&a[i][2]);
    for(i=0;i<n;i++)
      for(j=0;j<n-1-i;j++)
      if(a[j][1]<a[j+1][1])
      {
        t=a[j][1];
        a[j][1]=a[j+1][1];
        a[j+1][1]=t;
        t=a[j][0];
        a[j][0]=a[j+1][0];
        a[j+1][0]=t;
      }
      for(i=0;i<n-1;i++)
      printf("%d\n",a[i][0]);
      printf("%d",a[i][0]);
       }

1022: 分花生游戏系列之2 (简单博弈论)

https://www.oj.swust.edu.cn/problem/show/1022

#include <stdio.h>
int main()
{
    int T,last;
    long long m;
    scanf("%d",&T);
    while(T--)
    {
        scanf("%lld",&m);
        /*if(m==6)
        printf("Mr Tan win.\n");
        else
        {
         
        last=m%10;
        if(last>5&&last<=10)
        printf("Mr Yang win.\n");
        else
        printf("Mr Tan win.\n");
         
        }*/
        if(m%6==0)
        printf("Mr Yang win.\n");
        else
        printf("Mr Tan win.\n");
        }
    return 0; 
}

1024: 排序  https://www.oj.swust.edu.cn/problem/show/1024

#include <stdio.h>
#include <string.h>
int main()
{
    long long a[100000],n,t,j;  
    int i;
    while((scanf("%lld",&n))!=EOF) //while((scanf("%d",&n))!=EOF)
    {
        if(n==0)
        break;
        for(i=0;i<n;i++)
        {
            scanf("%lld",&a[i]); 
        }//给数组赋值 
        for(j=0;j<n;j++)
          for(i=0;i<n-1;i++)
          {
            if(a[i]>a[i+1])
            {
                t=a[i];
                a[i]=a[i+1];
                a[i+1]=t;
              }//冒泡排序法 
           }
           for(i=0;i<n;i++)
           printf("%lld\n",a[i]); 
    }
    return 0;
}

1031: Euclid's Game(博弈论)

https://www.oj.swust.edu.cn/problem/show/1031

#include<iostream>
using namespace std;
int main()
{
    int a,b;
    while(scanf("%d%d",&a,&b)==2&&(a+b)!=0)
    {
        int f=1;
        for(;;)
        {
            if(a>b)
            swap(a,b);//a<b
            if(b%a==0)break;
            if(b-a>a)break;
            b-=a;
            f=!f;
        }
        if(f == 1)
        printf("Stan wins\n");
        else
        printf("Ollie wins\n");
    }
}

1044: 陶陶摘苹果 https://www.oj.swust.edu.cn/problem/show/1044

#include <stdio.h>
int main()
{
    int i,n,sum=0;
    int a[10];
    for(i=0;i<10;i++)
    scanf("%d",&a[i]);//十颗树的高度
    scanf("%d",&n);
    for(i=0;i<10;i++)
    {
        if(a[i]<=n+30)
        sum+=1;//记录能摘到的苹果数 
     }
     printf("%d",sum);
     return 0; 

1174: 骰子游戏 https://www.oj.swust.edu.cn/problem/show/1174

#include <stdio.h>
#include <math.h>
int main()
{
    int n,m,i,a=0,b=0,c=0;
    while(scanf("%d %d",&n,&m)!=EOF)
    {
        a=0,b=0,c=0;
    for(i=1;i<=6;i++)
      {
         
        if(fabs(n-i)<fabs(m-i))//前一个人赢 
        a+=1;
        else if(fabs(n-i)>fabs(m-i))//后一个人赢 
        b+=1;
        else if(fabs(n-i)==fabs(m-i))//平局 
        c+=1;
      }
      printf("%d %d %d\n",a,c,b);
      } 
    return 0;
 }

1549: String reverse order https://www.oj.swust.edu.cn/problem/show/1549

#include <stdio.h>
#include <string.h>
int main()
{
    char a[99999];
    int m,i;
    scanf("%s",a);
    m=strlen(a);
    for(i=m-1;i>=0;i--)
    printf("%c",a[i]);
    return 0;
}

1154: 字符大小写转换 https://www.oj.swust.edu.cn/problem/show/1154

#include <stdio.h>
#include <string.h>
int main()
{
    int n,i=0,m=0,t,j,len,k=0;
    char a[11][100]={0},b[200]; 
    scanf("%d",&n);
    getchar();//接受空格 
    for(i=0;i<n;i++)
    scanf("%s",a[i]);//输入字符串 
    //for(i=0;i<n;i++)
    //strlwr(a[i]);//大写转小写 
    for(i=0;i<n;i++)
    {
    len=strlen(a[i]);
    for(j=0;j<len;j++)
    if(a[i][j]>='A'&&a[i][j]<='Z')
    a[i][j]+='a'-'A';
    for(k=0;k<len;k++) 
    for(j=0;j<len-1-k;j++)
    {
        if(a[i][j]>a[i][j+1])
        {
        t=a[i][j];
        a[i][j]=a[i][j+1];
        a[i][j+1]=t;
    }
    }
 
}   
    for(i=0;i<n-1;i++)
    printf("%s\n",a[i]);
    printf("%s",a[i]);
    return 0;
}

 1181: 数字反转 https://www.oj.swust.edu.cn/problem/show/1181

#include <stdio.h>
#include <math.h>
int main()
{
    int a,t,c=0;
    scanf("%d",&a);
    if(a<0)
    {
       a*=-1;
    while(a != 0)
    {
        t = a % 10;
        c = c * 10 + t;
        a /= 10;
    }
    c*=-1;
     } 
     else
     {
         while(a != 0)
    {
        t = a % 10;
        c = c * 10 + t;
        a /= 10;
    }
     }
     printf("%d",c);
     return 0;
}

2565: 笨鸟先飞 https://www.oj.swust.edu.cn/problem/show/2565

#include <stdio.h>
int main()
{
    long long m,t,v=1,i,j,k,s;
    scanf("%lld",&m);
    for(k=0; k<m; k++)
    {
        s=0,v=1;
        scanf("%lld",&t);
        if(t==0)
            printf("0\n");
        else
        {
            for(j=1; j<=t; j++)
            {
                s+=v;
                v+=2;//每次加2
            }
            printf("%lld\n",s%10000);
        }
    }
    return 0;
}

 1219: [Traditional] https://www.oj.swust.edu.cn/problem/show/1219

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

2421: 完数 https://www.oj.swust.edu.cn/problem/show/2421

#include<stdio.h>
int main()
{
    int a,b,c, i, j, sum;
    while(scanf("%d%d", &a,&b)!=EOF)
    {
        int ss=0;
        for(j = a; j <= b; j++)
        {
            sum = 0;
 
            for(i = 1; i < j; i++)
            {
                c = j % i;
 
                if(c == 0)
                {
                    sum += i;
                }
            }
 
            if(sum == j)
                ss++;
        }
        printf("%d\n",ss);
    }
 
    return 0;
}

2618: 涛神的防AK https://www.oj.swust.edu.cn/problem/show/2618

#include <stdio.h>
int main()
{
    int y,x,a,b,n,sum=0;
    scanf("%d %d %d",&a,&b,&n);
    while(n--)
    {
        scanf("%d %d",&x,&y);
        if(y<a*x+b)
        sum+=1;
        //printf("%d\n",sum);
    }
    printf("%d",sum);
    return 0;
}

1202: A + B Problem (Big integer version) 【高精度】 https://www.oj.swust.edu.cn/problem/show/1202

while True:
    a=int(input())
    b=int(input())
    print(a+b)

2329: 公司合并 https://www.oj.swust.edu.cn/problem/show/2329

#include <stdio.h>
#include <string.h>
int main()
{
    int n,m,j,i;
    double a[51]={0,0,3},t;
    while(scanf("%d",&n)!=EOF)
    {
    for(i=0;i<n;i++)
     scanf("%lf",&a[i]);//输入盈亏率
      
     /*for(j=0;j<51;j++)
         printf("%d ",a[j]);
         printf("\n");//输出数组 
         */
     for(j=0;j<n;j++)
        for(i=0;i<n-j-1;i++)
        {
            if(a[i]>a[i+1])
            {
                t=a[i+1];
                a[i+1]=a[i];
                a[i]=t;
            }
         } //冒泡排序 
          
         t=a[0];
         for(i=1;i<n;i++)
         t=(t+a[i])/2;
         printf("%.2f\n",t);
         /*
         for(j=0;j<n;j++)
         printf("%d ",a[i]);
         printf("\n");//输出数组和回车符便于调试 
         printf("n=%d",n);*/
         }
         return 0;
}

1160: 明明的随机数 https://www.oj.swust.edu.cn/problem/show/1160

#include <stdio.h>
#include <string.h>
int main()
{
    int t=0,n,a[101],i,j,m;
    scanf("%d",&n);
    m=n;
    //printf("m=%d\n",m);
    for(i=0;i<n;i++)
    scanf("%d",&a[i]);//输入 
     
    for(i=0;i<n-1;i++)
        for(j=i+1;j<n;j++)
        {
            if(a[i]==a[j]&&a[j]!=0)
            {a[j]=0;
             m--;}
        }//去重
         
         
    for(i=0;i<n-1;i++)
      for(j=0;j<n-1;j++)
      {
        if(a[j]<a[j+1])
        {
            t=a[j];
            a[j]=a[j+1];
            a[j+1]=t;
          }
           }
           printf("%d\n",m);
            
          /*for(i=0;i<n-1;i++)
            printf("%d ",a[i]);
             printf("%d\n",a[i]);*/
              
     for(i=m-1;i>0;i--)
     printf("%d ",a[i]);
     printf("%d",a[i]);
     return 0;
      
}

 

  • 1
    点赞
  • 16
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值