【NYOJ 分类——语言入门】——汇总(三)

小学生算术

时间限制: 3000 ms  |  内存限制: 65535 KB
难度: 1
描述
很多小学生在学习加法时,发现“进位”特别容易出错。你的任务是计算两个三位数在相加时需要多少次进位。你编制的程序应当可以连续处理多组数据,直到读到两个0(这是输入结束标记)。
输入
输入两个正整数m,n.(m,n,都是三位数)
输出
输出m,n,相加时需要进位多少次。
样例输入
123 456
555 555
123 594
0 0
样例输出
0
3 
1
来源
[张洁烽]原创
上传者

张洁烽


 
 
#include
int main()
{
	int a,b,c,d,e,f,n,m,i;
	for(;;)
	{
		scanf("%d%d",&n,&m);
		if(n==0&&m==0)
			return 0;
		else
		{
			i=0;
			a=n/100;b=n%100/10;c=n%10;
			d=m/100;e=m%100/10;f=m%10;
			if(c+f>=10)
			{i+=1;b+=1;}
			if(b+e>=10)
			{i+=1;a+=1;}
			if(a+d>=10)
			{i+=1;}
			printf("%d\n",i);
		}
	}
  return 0;
}
                

日期计算

时间限制: 3000 ms  |  内存限制: 65535 KB
难度: 1
描述
如题,输入一个日期,格式如:2010 10 24 ,判断这一天是这一年中的第几天。
输入
第一行输入一个数N(0 输出
每组输入数据的输出占一行,输出判断出的天数n
样例输入
3
2000 4 5
2001 5 4
2010 10 24
样例输出
96
124
297
来源
[naonao]改编C语言习题
上传者
naonao
 
#include
int main()
{
	int a,b=0,c,y,m,d,fib;
	scanf("%d",&a);
	while(a--)
	{
		scanf("%d %d %d",&y,&m,&d);
		if(y%400==0||y%100!=0&&y%4==0)
			fib=29;
		else fib=28;
		for(c=1;c<=m;c++)
		switch(c-1)
		{
           case 1:
		   case 3:
		   case 5:
		   case 7:
		   case 8:
		   case 10:b+=31;break;
		   case 2:b+=fib;break;
		   case 4:
		   case 6:
		   case 9:
		   case 11:b+=30;break;
		}
		b+=d;
		printf("%d\n",b);
		b=0;
	}
	return 0;
}        

  • 题目77
  • 题目信息
  • 运行结果
  • 本题排行
  • 讨论区

开灯问题

时间限制: 3000 ms  |  内存限制: 65535 KB
难度: 1
描述

有n盏灯,编号为1~n,第1个人把所有灯打开,第2个人按下所有编号为2 的倍数的开关(这些灯将被关掉),第3 个人按下所有编号为3的倍数的开关(其中关掉的灯将被打开,开着的灯将被关闭),依此类推。一共有k个人,问最后有哪些灯开着?输入:n和k,输出开着的灯编号。k≤n≤1000

输入
输入一组数据:n和k
输出
输出开着的灯编号
样例输入
7 3
样例输出
1 5 6 7
来源
经典算法
上传者
首席执行官
 
#include 
using namespace std;
int main()
{
	int n,k,a[1000],i;
	cin>>n>>k;
	for(i=0;i

cigarettes

时间限制: 3000 ms  |  内存限制: 65535 KB
难度: 2
描述

Tom has many cigarettes. We hypothesized that he has n cigarettes and smokes them

one by one keeping all the butts. Out of k > 1 butts he can roll a new cigarette. 
Now,do you know how many cigarettes can Tom has?

输入
First input is a single line,it's n and stands for there are n testdata.then there are n lines ,each line contains two integer numbers giving the values of n and k.
输出
For each line of input, output one integer number on a separate line giving the maximum number of cigarettes that Peter can have.
样例输入
3
4 3
10 3
100 5
样例输出
5
14
124
来源
[rooot]原创
上传者
rooot

 
#include "stdio.h"
#include
int main()
{
	//freopen("d:\\1.txt","r",stdin);
	//freopen("d:\\2.txt","w",stdout);
	int m;
	scanf("%d",&m);
    while(m--)
	{
		int n,k,sum;
		scanf("%d%d",&n,&k);
		sum=n;
		while(n/k)                   
		{ sum+=n/k;  n=n/k+n%k; }
		printf("%d\n",sum);
	}
	return 0;
}        

n-1位数

时间限制: 3000 ms  |  内存限制: 65535 KB
难度: 1
描述

已知w是一个大于10但不大于1000000的无符号整数,若w是n(n≥2)位的整数,则求出w的后n-1位的数。

输入
第一行为M,表示测试数据组数。
接下来M行,每行包含一个测试数据。
输出
输出M行,每行为对应行的n-1位数(忽略前缀0)。如果除了最高位外,其余位都为0,则输出0。
样例输入
4
1023
5923
923
1000
样例输出
23
923
23
0
来源
[rooot]原创
上传者
rooot

 
#include
int main()
{
	int n,m;
	scanf("%d",&n);
	while(n--)
	{
		scanf("\n%*c%d",&m);
		printf("%d\n",m);
	}
}                


兄弟郊游问题

时间限制: 3000 ms  |  内存限制: 65535 KB
难度: 2
描述
兄弟俩骑车郊游,弟弟先出发,每分钟X米,M分钟后,哥哥带一条狗出发。以每分钟Y米的速度去追弟弟,而狗则以每分钟Z米的速度向弟弟跑去,追上弟弟后又立即返回,直到哥哥追上弟弟时,狗跑了多少米?
输入
第一行输入一个整数N,表示测试数据的组数(N<100)
每组测试数据占一行,是四个正整数,分别为M,X,Y,Z(数据保证X 输出
输出狗跑的路径,结果保留小数点后两位。
样例输入
1
5 10 15 20
样例输出
200.00
来源
经典数学问题
上传者
张云聪
 
#include
#include
using namespace std;
int main()
{
	int n;
	cin>>n;
	while(n--)
	{
		int s,a,b,c;
		cin>>s>>a>>b>>c;
		printf("%.2lf\n",s*a/(double)(b-a)*c);
	}

}        


成绩转换

时间限制: 3000 ms  |  内存限制: 65535 KB
难度: 1
描述
输入一个百分制的成绩M,将其转换成对应的等级,具体转换规则如下:
90~100为A;
80~89为B;
70~79为C;
60~69为D;
0~59为E;
输入
第一行是一个整数N,表示测试数据的组数(N<10)
每组测试数据占一行,由一个整数M组成(0<=M<=100)。
输出
对于每组输入数据,输出一行。
样例输入
2
97
80
样例输出
A
B
来源
hdu2004
上传者
张云聪
 
#include
using namespace std;
int main()
{
int n,s;
cin>>n;
while(n--)
{
cin>>s;
switch(s/10)
{
case 10:
case 9:cout<<"A"<


1的个数

时间限制: 3000 ms  |  内存限制: 65535 KB
难度: 1
描述
小南刚学了二进制,他想知道一个数的二进制表示中有多少个1,你能帮他写一个程序来完成这个任务吗?
输入
第一行输入一个整数N,表示测试数据的组数(1 每组测试数据只有一行,是一个整数M(0= 输出
每组测试输出占一行,输出M的二进制表示中1的个数
样例输入
3
4
6
7
样例输出
1
2
3
来源
[张云聪]原创
上传者
张云聪
 
#include
main(){int n,m,s;scanf("%d",&n);while(n--){scanf("%d",&m);s=0;while(m)m&=m-1,s++;printf("%d\n",s);}}        


两点距离

时间限制: 3000 ms  |  内存限制: 65535 KB
难度: 1
描述
输入两点坐标(X1,Y1),(X2,Y2)(0<=x1,x2,y1,y2<=1000),计算并输出两点间的距离。
输入
第一行输入一个整数n(0 随后每组占一行,由4个实数组成,分别表示x1,y1,x2,y2,数据之间用空格隔开。
输出
对于每组输入数据,输出一行,结果保留两位小数。
样例输入
2
0 0 0 1
0 1 1 0
样例输出
1.00
1.41
来源
[苗栋栋]原创
上传者
苗栋栋

 
#include
#include
#include
using namespace std;
int main()
{
	/*freopen("1.txt","r",stdin);
	freopen("2.txt","w",stdout);*/

double x1,x2,y1,y2,m;
double a;
cin>>m;
while(m--)
{
	cin>>x1>>y1>>x2>>y2;
    a=sqrt((double)((x1-x2)*(x1-x2)+(y1-y2)*(y1-y2)));
	cout.setf(ios::fixed); 
    cout<

分数加减法

时间限制: 3000 ms  |  内存限制: 65535 KB
难度: 2
描述
编写一个C程序,实现两个分数的加减法
输入
输入包含多行数据 
每行数据是一个字符串,格式是"a/boc/d"。 
其中a, b, c, d是一个0-9的整数。o是运算符"+"或者"-"。 

数据以EOF结束 
输入数据保证合法
输出
对于输入数据的每一行输出两个分数的运算结果。 
注意结果应符合书写习惯,没有多余的符号、分子、分母,并且化简至最简分数
样例输入
1/8+3/8
1/4-1/2
1/3-1/3
样例输出
1/2
-1/4
0
来源
水题比赛
上传者
hzyqazasdf
 
#include
char str[20];
int Gcd(int m,int n)
{
	if (m==0) return n;
	return Gcd(n%m,m);
}
int main()
{
	int fz,fm,gcd;
	while(scanf("%s",str)!=EOF)
	{
		if(str[3]=='-') 
			fz=(str[0]-'0')*(str[6]-'0')-(str[2]-'0')*(str[4]-'0');
		else fz=(str[0]-'0')*(str[6]-'0')+(str[2]-'0')*(str[4]-'0');
		if(fz)
		{
			fm=(str[2]-'0')*(str[6]-'0');
			gcd=Gcd(fz,fm);
			if(gcd<0) gcd=-gcd;
			if(fm/gcd==1) printf("%d\n",fz/gcd);
			else printf("%d/%d\n",fz/gcd,fm/gcd);
		}
		else puts("0");
	}
}
        






你可能感兴趣的:(语言入门,NYOJ,语言入门,NYOJ,分类汇总,ACM基础练习)