ZOJ 简单题集合

简介: 这部分题由于过于简单,属于白送题目,因此把所有特别简单题的合集于此。 1048:统计某人12个月的银行帐户余额的平均数。(简单的令人汗!) Code_1048/*ZOJ 1048: 统计小数的平均数!居然就是12个double求平均数。

这部分题由于过于简单,属于白送题目,因此把所有特别简单题的合集于此。

1048:统计某人12个月的银行帐户余额的平均数。(简单的令人汗!)

img_1c53668bcee393edac0d7b3b3daff1ae.gif img_405b18b4b6584ae338e0f6ecaf736533.gif Code_1048
/*ZOJ 1048: 统计小数的平均数!居然就是12个double求平均数。。汗!*/
#include 
<stdio.h>
double balance[12];
int main()
{
 
int i;
 
double sum=0,aver;
 
for(i=0;i<12;i++)
 {
  scanf(
"%lf"&balance[i]);
  sum
+=balance[i];
 }
 aver
=sum/12;
 printf(
"$%.2lf", aver);
}

 1070:简单交流电路,求电阻上的电压降落。纯属解数学方程。

img_1c53668bcee393edac0d7b3b3daff1ae.gif img_405b18b4b6584ae338e0f6ecaf736533.gif Code_1070
/*1070 ZOJ*/
#include 
<stdio.h>
#include 
<math.h>
void main()
{
    
double vs,vr,r,c,w;
    
int n,i;
    
while(scanf("%lf %lf %lf %d"&vs,&r,&c, &n)!=EOF && n>0)
    {
        
for(i=0;i<n;i++)
        {
            scanf(
"%lf",&w);
            vr
=w*c*vs/sqrt(w*w+1);
            printf(
"%.3lf\n", vr);
        }
    }
}

 1049:某人买地,给出一点坐标,流失土地以半圆形扩张,每年增加50平方英里面积。问多少年后某点消失。

img_1c53668bcee393edac0d7b3b3daff1ae.gif img_405b18b4b6584ae338e0f6ecaf736533.gif Code_1049
/*ZOL 1049 - I Think I Need a Houseboat. */
#include 
<math.h>
#include 
<stdio.h>
/*0.01 PI*/
#define PI_PERCENT 0.03141592653589793

int main()
{
    
int i,n,years;
    
double x,y;
    scanf(
"%d",&n);
    
for(i=1;i<=n;i++)
    {
        scanf(
"%lf %lf",&x,&y);
        years
=(int)((x*x+y*y)*PI_PERCENT)+1;
        printf(
"Property %d: This property will begin eroding in year %d.\n", i, years);        
    }
    printf(
"END OF OUTPUT.");
    
return 0;
}

1078:求一个数字用2,3,...,16进制表示时是否是“回文数”,例如12321。

img_1c53668bcee393edac0d7b3b3daff1ae.gif img_405b18b4b6584ae338e0f6ecaf736533.gif Code_1078
/*1078 - Palindrom Numbers (回文数字)*/
#include 
<string.h>
#include 
<stdio.h>
/*判断一个数字n在以base为进制时是否是回文数字*/
int IsPalindrom(unsigned int n, unsigned int base)
{
    
int i=0,j;
    
char buffer[20],*s;
    memset(buffer,
0,sizeof(buffer));
    
while(n)
    {
        buffer[i
++]=n%base;
        n
/=base;
    }
    
/*现在i就是strlen(buffer),判断是否回文数*/
    s
=buffer;
    
for(j=0;j<i/2;j++)
        
if(buffer[j]!=buffer[i-1-j])
            
return 0;
    
/*说明是回文数*/
    
return 1;
}

int main()
{
    unsigned 
int n, base;
    
char text[64];
    
while(scanf("%d",&n)!=EOF && n>0)
    {
        memset(text,
0,sizeof(text));
        
for(base=2;base<=16;base++)
        {
            
if(IsPalindrom(n, base))
                sprintf(text
+strlen(text)," %d",base);
        }
        
if(strlen(text)>0)
            printf(
"Number %u is palindrom in basis%s\n", n, text);
        
else
            printf(
"Number %u is not a palindrom\n", n);
    }
    
return 0;
}

1099:简单的HTML解析。仅包含<br>,<hr>标记。每行80字符。

img_1c53668bcee393edac0d7b3b3daff1ae.gif img_405b18b4b6584ae338e0f6ecaf736533.gif Code_1099
/*ZOJ 1099 - HTML */
#include 
<stdio.h>
#include 
<string.h>
int main()
{
    
int i,length=0;/*当前行的长度*/
    
char word[81];
    
while(scanf("%s", word)!=EOF)
    {
        
if(strcmp(word, "<br>")==0)
        {
            printf(
"\n");
            length
=0;
        }
        
else if(strcmp(word, "<hr>")==0)
        {
            
if(length>0) printf("\n");
            
for(i=0;i<80;i++) printf("-");
            printf(
"\n");
            length
=0;
        }
        
else if(length+strlen(word)+1 >80)
        {
            
/*需要换行*/
            printf(
"\n%s", word);
            length
=strlen(word);
        }
        
else
        {
            
/*无需要换行*/
            
if(length>0)
            {
                printf(
" ");
                length
++;
            }
            printf(
"%s", word);
            length 
+= strlen(word);
        }
    }
    
return 0;
}

1180:要求求出100w以内的所有Self Number。所谓SelfNumber,即不存在任何数字n,使n+digitsum(n)=m成立,则m称为SelfNumber。这题我写的很“暴力”,开了100w字节空间,并且要计算100w次才能得出结果。运行时间长达50ms。

img_1c53668bcee393edac0d7b3b3daff1ae.gif img_405b18b4b6584ae338e0f6ecaf736533.gif Code_1180
/*ZOJ 1180 - Self Numbers */
#include 
<stdio.h>
#define N 1000001
char flag[N]; /*如果i是self Number,则flag[i]=0*/

unsigned 
long d(unsigned long n)
{
     unsigned 
long result=n;
    
while(n)
    {
        result
+=n%10;
        n
/=10;
    }
    
return result;
}

void InitFlags()
{
    unsigned 
long i,j;
    
for(i=1;i<N;i++)
    {
        j
=d(i);
        flag[j]
=1;
    }
}

int main()
{
    unsigned 
long i;
    InitFlags();
    
for(i=1;i<N;i++)
        
if(flag[i]==0)
            printf(
"%u\n",i);
    
return 0;
}

1241:给出直角三角形的三条边a,b,c其中的两个,求另外一个。 

img_1c53668bcee393edac0d7b3b3daff1ae.gif img_405b18b4b6584ae338e0f6ecaf736533.gif Code_1241
/*1241 - Geometry Made Simple 很简单的题*/
#include 
<math.h>
#include 
<stdio.h>
int main()
{
    
int a,b,c,count=1;
    
while(1)
    {
        scanf(
"%d %d %d"&a, &b, &c);
        
if(a==0 && b==0 && c==0break;
        
        printf(
"Triangle #%d\n", count++);
        
        
if(c==-1)
            printf(
"c = %.3f\n", sqrt(a*a+b*b));
        
else if(a==-1)
        {
            
if(c<=b) printf("Impossible.\n");
            
else printf("a = %.3f\n", sqrt(c*c-b*b));
        }
        
else if(b==-1)
        {
            
if(c<=a) printf("Impossible.\n");
            
else printf("b = %.3f\n", sqrt(c*c-a*a));
        }
        
        printf(
"\n");
    }
}

1242:用C14衰减法测量生物年代。生物体存活时,C14含量为810 d/(克*小时),死亡后该值每5730年衰减至原来的一半。现在给出生物体样本重量,C14含量,求出生物生活年代。对于10000年以下的,四舍五入到100年整数倍,对于10000年以上的,四舍五入到1000年整数倍。

假设当前含量为 a d/(克*小时),年代为t,则有方程:t/5370=log2(810/a);

因此有:t=5370*log2(810/a);

库函数中只有自然对数和10为底对数,可根据对数性质:log2(x)=log(x)/log(2);

四舍五入可以根据(加0.5然后取整)法。

img_1c53668bcee393edac0d7b3b3daff1ae.gif img_405b18b4b6584ae338e0f6ecaf736533.gif Code_1242
#include <math.h>
#include 
<stdio.h>
int main()
{
    
int x1,x2,n=1;
    unsigned 
long result;
    
double years;
    
while(scanf("%d %d",&x1,&x2)!=EOF)
    {
        
if(x1==0 && x2==0break;
        
//log2(x)=log(x)/log(2), log是自然对数,以e为底
        years = log(810.0/x2*x1)*5730/log(2);
        
if(years<10000)
        {
            
//四舍五入到100整数倍
            result = ((unsigned long)((years+50)/100))*100;
        }
        
else
        {
            
//四舍五入到1000整数倍
            result = ((unsigned long)((years+500)/1000))*1000;
        }
        printf(
"Sample #%d\n", n++);
        printf(
"The approximate age is %lu years.\n\n", result);
    }
    
return 0;
}

1243:URL字符串解析。提取出协议,主机地址,端口号,服务器路径。

img_1c53668bcee393edac0d7b3b3daff1ae.gif img_405b18b4b6584ae338e0f6ecaf736533.gif Code_1243
/*ZOJ 1243 - URLs*/
#include 
<string.h>
#include 
<stdio.h>
/*读取URL的缓冲区*/
char line[64];
int main()
{
    
int n, i, j, hoststart;
    
char *s,c;
    scanf(
"%d",&n);
    
for(i=1;i<=n;i++)
    {
        scanf(
"%s", line);
        printf(
"URL #%d\n", i);
        
/*<protocol> is always one of http, ftp, gopher*/
        
switch(line[0])
        {
            
case 'h': hoststart=7; printf("Protocol = http\n");break;
            
case 'f': hoststart=6; printf("Protocol = ftp\n");break;
            
case 'g': hoststart=9; printf("Protocol = gopher\n");break;
        }
        
        
/*<host> 由字母/数字,点组成 */
        printf(
"Host     = "); /*acm.baylor.edu*/
        
for(j=hoststart; line[j]!=':' && line[j]!='/' && line[j]; j++) printf("%c", line[j]);
        printf(
"\n");
        
        
/*[Port]*/
        printf(
"Port     = ");
        
if(line[j]==':')
        {
            
for(j=j+1; line[j]!='/' && line[j]; j++) printf("%c", line[j]);
            printf(
"\n");
        }
        
else
            printf(
"<default>\n");
        
        
/*Path,如果line[j]为斜杠则说明有Path*/
        printf(
"Path     = ");
        
if(line[j]=='/')
        {
            
for(j=j+1; line[j]; j++) printf("%c", line[j]);
            printf(
"\n");
        }
        
else
            printf(
"<default>\n");
        
        
/*blank line after each test cas.*/
        printf(
"\n");
    }
    
return 0;
}

1334:一个计算器,把某进制数转换成另一个进制。

img_1c53668bcee393edac0d7b3b3daff1ae.gif img_405b18b4b6584ae338e0f6ecaf736533.gif Code_1334
/* ZOJ 1334 - Basically Speaking */
/* 一个计算器,把某进制数转换成另一个进制 */
#include 
<stdio.h>
#include 
<string.h>

char numbers[]="0123456789ABCDEF";

/*把输入字符串,以进制转换到dest */
void Convert(unsigned long n, char *dest, int base)
{
    
int index=6;
    strcpy(dest, 
"       ");
    
while(n)
    {
        
if(index<0)
        {
            strcpy(dest,
"  ERROR");/*注意右对齐!因此前面补齐2个空格!*/
            
return;
        }
        dest[index
--]=numbers[n%base];
        n
/=base;
    }
}

/*把输入的字符串(某进制)转换为一个整数*/
unsigned 
long GetNumber(char *src, int base)
{
    unsigned 
long n=0, k=1;
    
int i;
    
for(i=strlen(src)-1; i>=0; i--)
    {
        n
+=(strchr(numbers, src[i]) - numbers )*k;
        k
*=base;
    }
    
return n;
}

int main()
{
    
char buffer[100], result[8];
    unsigned 
long n;
    
int base1,base2;
    
while(scanf("%s %d %d", buffer,&base1,&base2)!=EOF)
    {
        n
=GetNumber(buffer, base1);
        Convert(n, result, base2);
        printf(
"%s\n", result);
    }
    
return 0;
}

1760:输入一序列数字(以0表示结束),输出这些数字中有多少个二倍关系。

img_1c53668bcee393edac0d7b3b3daff1ae.gif img_405b18b4b6584ae338e0f6ecaf736533.gif Code_1760
/*ZOJ 1760 - Doubles*/
/*寻找一个输入序列(2~15个整数)中有多少二倍关系*/
#include 
<stdio.h>
int n[16]; /*存储序列数字*/
int count; /*该List中含有多少个数字*/
int main()
{
    
int i,j,result;
    
while(1)
    {
        scanf(
"%d",&n[0]);
        
if(n[0]==-1break/*检查第一个数字是不是-1,表示结束输入*/
        count
=1;
        
for(count=1;count<16 && n[count-1]!=0; count++)
             scanf(
"%d"&n[count]);
        
        
/*统计二倍的个数*/
        result
=0;
        
for(i=0;i<count-1;i++)
            
for(j=i+1;j<count;j++)
                
if((n[i]==n[j]*2)||(n[j]==n[i]*2))
                    result
++;
        printf(
"%d\n",result); 
    }
    
return 0;
}

1763:好像是求取一些连续输入的温度的差值。

img_1c53668bcee393edac0d7b3b3daff1ae.gif img_405b18b4b6584ae338e0f6ecaf736533.gif Code_1763
#include <stdio.h>
int main()
{
    
double t1=0,t2=0;
    scanf(
"%lf",&t1);
    
while(scanf("%lf",&t2)!=EOF && ((int)t2) < 999)
    {
        printf(
"%.2lf\n",t2-t1);
        t1
=t2;
    }
    printf(
"End of Output\n");
    
}

2001:给出两个数字,颠倒数位后想加,结果再颠倒数位。例如输入24 1,则42+1=43, 输出34;

img_1c53668bcee393edac0d7b3b3daff1ae.gif img_405b18b4b6584ae338e0f6ecaf736533.gif Code_2002
/* ZOJ 2002 - Adding Reversed Numbers */
#include 
<stdio.h>
int GetInverseNum(int n)
{
    
int r=0;
    
while(n)
    {
        r
=r*10+(n%10);
        n
/=10;
    }
    
return r;
}


int main()
{
    
int count,i,n1,n2,sum;
    scanf(
"%d"&count);
    
for(i=0;i<count;i++)
    {
        scanf(
"%d %d"&n1,&n2);
        n1
=GetInverseNum(n1);
        n2
=GetInverseNum(n2);
        sum
=GetInverseNum(n1+n2);
        printf(
"%d\n",sum);
    }
    
return 0;
}

2987:给出n组输入,每个输入包含一个数字m(以1为base),和一个单词,打印出该单词去掉第m个字母的结果。

img_1c53668bcee393edac0d7b3b3daff1ae.gif img_405b18b4b6584ae338e0f6ecaf736533.gif Code_2987
/* ZOJ 2987 - Misspelling */
#include 
<stdio.h>
#include 
<string.h>
char line[84];
int main()
{
    
int n, m, i, j;
    scanf(
"%d",&n);
    
for(i=1;i<=n;i++)
    {
        
/*m是以1为base的,表示要删除第几个字符*/
        scanf(
"%d %s",&m, line);
        printf(
"%d ", i);/*打印序号*/
        
/*注意不要打印索引为m-1的字符即可!*/
        
for(j=0;j<m-1;j++) printf("%c", line[j]);
        
for(j=m;j<strlen(line);j++) printf("%c", line[j]);
        printf(
"\n");
    }
    
return 0;
}

 ( TO BE CONTINUED... )        --hoodlum1980

        

目录
相关文章
|
5月前
##CC10 牛牛的双链表求和
##CC10 牛牛的双链表求和
39 0
|
6月前
|
容器
华为机试HJ93:数组分组
华为机试HJ93:数组分组
|
6月前
|
Serverless
华为机试HJ30:字符串合并处理
华为机试HJ30:字符串合并处理
|
6月前
|
测试技术
华为机试HJ48:从单向链表中删除指定值的节点
华为机试HJ48:从单向链表中删除指定值的节点
|
9月前
|
Go vr&ar
CF中的线段树题目
CF中的线段树题目
51 0
|
9月前
|
存储
【剑指offer】JZ3 数组中重复的数字、 JZ4 二维数组中的查找
【剑指offer】JZ3 数组中重复的数字、 JZ4 二维数组中的查找
AC牛客 BM16 删除有序链表中重复的元素-II
AC牛客 BM16 删除有序链表中重复的元素-II
47 0
|
机器学习/深度学习 算法
【每日算法】AB8 循环队列(基于数组)
【每日算法】AB8 循环队列(基于数组)
139 0
|
算法 测试技术
【每日算法】AB11 合并两个排序的链表
【每日算法】AB11 合并两个排序的链表
75 0
【每日算法】AB11 合并两个排序的链表
|
人工智能
CF220B Little Elephant and Array(扫描线+树状数组)
CF220B Little Elephant and Array(扫描线+树状数组)
60 0