作业 循环结构-for.

文章详细描述了多个编程题目,涉及整数范围内满足特定条件(如偶数、能被3或7整除、回文数等)的数的计数、输出、和的计算,以及数学问题如平均分、最高分和最短时间等。

题目描述

输入两个整数n,m,输出两个整数之间(包括n,m)的所有偶数(偶数指能被2整除的数)

输入

两个整数n,m

输出

一行,N到m之间的偶数,之间用空格隔开

#include<iostream>
using namespace std;
int main()
{
	int m,n;
	cin>>n>>m;
	for(int i = n;i<=m;i++)
	{
	    if(i%2==0)
		{
			cout<<i<<endl;
		}
	}
	return 0;
}

统计符合要求的数的数量

题目描述

输入两个整数n,m,输出两个整数之间(包括n,m)的既能被3整除并且个位是3的数的数量

输入

两个整数n,m

输出

满足条件的数的个数

#include<iostream>
using namespace std;
int main()
{
	int n,m;
	int cnt=0;
	cin>>n>>m;
	for(int i = n;i<=m;i++)
	{
	    if(i%3==0 && i%10==3)
		{
			cnt=cnt+1;
		}
	}
	cout<<cnt;
	return 0;
}

符合要求的数的和

题目描述

输入两个整数n,m,输出两个整数之间(包括n,m)的既能被7整除并且其中1位包含7的数的和例如14、21能被7整除,这样的数据要加进来71、17、127 这样的数有一位包含7,也要加进来

输入

两个整数n,m(均小于1000)

输出

满足条件的数的和

#include<iostream>
using namespace std;
int main()
{
	int n,m;
	int cnt=0;
	cin>>n>>m;
	for(int i = n;i<=m;i++)
	{
	    if(i%7==0)
		{
			if(i%10==7 or i/10%10==7 or i/100%10==7)
			{
				cnt=cnt+i;
			}
		}
	}
	cout<<cnt;
	return 0;
}

能被2整除不能被3整除的数

题目描述

输入两个整数n,m,输出两个整数之间(包括n,m)的能被2整除但不能被3整除的数,有多少个,和是多少

输入

两个整数n,m(均小于1000)

输出

第一行输出满足条件的数,空格隔开第二行输出他们的和第三行输出他们的个数

#include<iostream>
using namespace std;
int main()
{
	int n,m;
	int cnt=0;
	int sum=0;
	cin>>n>>m;
	for(int i = n;i<=m;i++)
	{
	    if(i%2==0 && i%3!=0)
		{
			sum=sum+1;
			cnt=i+cnt;
			cout<<i<<" ";
		}
	}
	cout<<cnt<<endl;
	cout<<sum;
	return 0;
}

数学平均成绩

题目描述

第一行输入1个整数n,代表有n个童鞋第二行依次输入n个同学的数学成绩,求他们的平均成绩(保留整数部分)

输入

第一行1个整数n,代表学生数量第二行n个整数,代表每个同学的成绩

输出

成绩平均值

#include<iostream>
using namespace std;
int main()
{
	int n,a;
	int sum=0;
	cin>>n;
	for(int i = 1;i<=n;i++)
	{
		cin>>a;
		sum=sum+a;
	}
	cout<<sum/n;
	return 0;
}

英语优等生

题目描述

老师想统计一下班里同学们考试成绩80分以上的有多少人,他们的平均分是多少(保留整数部分)输入

第一行1个整数n,代表学生数量第二行n个整数,代表每个同学的成绩

输出

一行两个整数第一个整数代表80分以上的人数第二个整数代表80分以上的平均成绩

using namespace std;
int main()
{
	int n,a;
	int sum=0;
	int cnt=0;
	cin>>n;
	for(int i = 0;i<n;i++)
	{
		cin>>a;
		if(a>=80)
		{
			sum=sum+a;
			cnt++;
		}
	}
	cout<<cnt<<endl;
	cout<<sum/cnt;
	return 0;
}

语文最高分

题目描述

班里有n个同学,老师想知道最高分是多少

输入

第一行1个整数n,代表学生数量第二行n个整数,代表每个同学的成绩

输出

一个整数,代表最高分

using namespace std;
int main()
{
	int n,a;
	int sum=0;
	cin>>n;
	for(int i = 0;i<n;i++)
	{
		cin>>a;
		if(a>=sum)
		{
			sum=a;
		}
	}
	cout<<sum;
	return 0;
}

用时最短

题目描述

班里有n个同学,参加了百米长跑,教练拿到了大家的用时教练想知道跑的最快的同学用时是多少输入第一行1个整数n,代表学生数量第二行n个实数,代表每个同学的用时(两位小数)

输出一个实数,代表最快的同学用时(保留两位小数)

#include<iostream>
#include<iomanip>
using namespace std;
int main()
{
	float n,a;
	float sum=10;
	cin>>n;
	for(int i = 0;i<n;i++)
	{
		cin>>a;
		if(a<sum)
		{
			sum=a;
		}
	}
	cout<<fixed<<setprecision(2)<<sum;
	return 0;
}

身高差

题目描述

体育课上,老师想知道班级里最高的同学和最矮同学的身高差是多少

输入

第一行1个整数n,代表学生数量第二行n个整数,代表每个同学的身高

输出

一个整数,代表最高同学和最矮同学的身高差

#include<iostream>
using namespace std;
int main()
{
	int n,a;
	int sum=150;
	int cnt=150;
	cin>>n;
	for(int i = 0;i<n;i++)
	{
		cin>>a;
		if(a<sum)
		{
			sum=a;
		}
		if(a>sum)
		{
			cnt=a;
		}
	}
	cout<<cnt-sum;
	return 0;
}

寻找雷劈数

题目描述

把整数3025从中剪开分为30和25两个数,此时再将这两数之和平方,计算结果又等于原数。(30+25)*(30+25)=55*55=3025,这样的数叫“雷劈数”。求所有符合这样条件的四位数。(ab+cd)*(ab+cd)=abcd

输入

输出

若干行,每行一个雷劈数,从小到大输出。

#include<iostream>
using namespace std;
int main()
{
	int x,y,z;
	for(int n = 0;n>10000;n++)
	{
		x=n%10+n/10%10*10;
		y=n/100%10+n/1000%10*10;
		z=(x+y)*(x+y);
		if(z==n) cout<<n;
	}
	return 0;
}

能被5整除且至少有一位数字是5的所有整数的个数

题目描述

找出1-N中,能被5整除且至少有一位数字是5的所有整数的个数.N<32767输入输入只有一行,只有1个整数N。输出输出只有一行(这意味着末尾有一个回车符号),包括1个整数。能被5整除且至少有一位数字是5的所有整数的个数样例

输入复制9999

输出复制1271

#include<iostream>
using namespace std;
int main()
{
	int n;
	int cnt=0;
	cin>>n;
	for(int i = 1;i<=n;i++)
	{
		if(i%5==0)
		{
			if(i%10==5 or i/10%10==5 or i/100%10==5 or i/1000%10==5 or i/100%10==5)
			{
				cnt=cnt+1;
			}
		}
	}
	cout<<cnt;
	return 0;
}

回文偶数?

题目描述

小明发现有一类数非常有趣,他们正过来读和反过来读是一样的,比如:121、202、383等,小明给这类数起了一个名字,叫做回文数。请你写程序帮助小明找出所有3位的既是回文数,又是偶数的数,比如:202就是满足条件的数,而121虽然是回文数但不是偶数。

输入

输出

所有满足条件的3位的回文偶数,每行1个。

#include<iostream>
using namespace std;
int main()
{
	for(int i = 100;i<=1000;i++)
	{
		if(i==i%10*100+i/10%10*10+i/100)
		{
			if(i%2==0)
			{
				cout<<i<<endl;
			}
		}
	}
	return 0;
}

同因查找

题目描述

求出10至1000之内能同时被2、3、7整除的数,并输出。每行一个。

输入

输出

按要求输出满足条件的数,每行1个

#include<iostream>
using namespace std;
int main()
{
	for(int i = 10;i<=1000;i++)
	{
		if(i%2==0 && i%3==0 && i%5==0)
		{
			cout<<i<<endl;
		}
	}
	return 0;
}

奇数及偶数和

题目描述

给出一个正整数n(1≤n≤1000),求出1,2,......n中全部奇数和以及全部偶数的和。例如:n=9奇数和1+3+5+7+9=25偶数和2+4+6+8=20

输入

一个整数n。

输出

一行,奇数和与偶数和,中间一个" "(空格)。

#include<iostream>
using namespace std;
int main()
{
	int n;
	cin>>n;
	int sum=0;
	int cnt=0;
	for(int i = 1;i<=n;i++)
	{
		if(i%2!=0)
		{
			sum=sum+i;
		}
		if(i%2==0)
		{
			cnt=cnt+i;
		}
	}
	cout<<sum<<" ";
	cout<<cnt;
	return 0;
}

小丽找数?

题目描述

小丽同学想在1~n中找出这样的数,这个数的各个位的和不能被2整除也不能被5整除,比如3、12、25、30、100。这些数都满足各个位的和不能被2和5整除。请你编程找出1~n中这些数有多少个?

输入

一个整数n(n<=9999)

输出

1~n中满足条件的数的个数

#include<iostream>
using namespace std;
int main()
{
	int n;
	cin>>n;
	int cnt=0;
	for(int i = 1;i<=n;i++)
	{
		int g =i%10;
		int s =i/10%10;
		int b =i/100%10;
		int q =i/1000%10;
		if(sum%2!=0 && sum%5!=0)
		{
			cnt++;
		}
	}
	cout<<cnt;
	return 0;
}

h@node1:~$ hadoop jar SougouQ-1.0-SNAPSHOT.jar com.mapreduce.sogou.sogouMain \ > /input/sogou/SogouQ.reduced /output/sogou_cleaned \ > -Dmapreduce.map.memory.mb=2048 \ > -Dmapreduce.reduce.memory.mb=2048 2025-06-16 21:32:04,723 INFO client.RMProxy: Connecting to ResourceManager at node1/192.168.61.128:8032 2025-06-16 21:32:05,375 WARN mapreduce.JobResourceUploader: Hadoop command-line option parsing not performed. Implement the Tool interface and execute your application with ToolRunner to remedy this. 2025-06-16 21:32:05,393 INFO mapreduce.JobResourceUploader: Disabling Erasure Coding for path: /tmp/hadoop-yarn/staging/h/.staging/job_1750071296455_0010 2025-06-16 21:32:05,673 INFO input.FileInputFormat: Total input files to process : 1 2025-06-16 21:32:06,597 INFO mapreduce.JobSubmitter: number of splits:2 2025-06-16 21:32:06,655 INFO Configuration.deprecation: yarn.resourcemanager.system-metrics-publisher.enabled is deprecated. Instead, use yarn.system-metrics-publisher.enabled 2025-06-16 21:32:07,218 INFO mapreduce.JobSubmitter: Submitting tokens for job: job_1750071296455_0010 2025-06-16 21:32:07,220 INFO mapreduce.JobSubmitter: Executing with tokens: [] 2025-06-16 21:32:07,502 INFO conf.Configuration: resource-types.xml not found 2025-06-16 21:32:07,502 INFO resource.ResourceUtils: Unable to find 'resource-types.xml'. 2025-06-16 21:32:07,604 INFO impl.YarnClientImpl: Submitted application application_1750071296455_0010 2025-06-16 21:32:07,658 INFO mapreduce.Job: The url to track the job: http://node1:8088/proxy/application_1750071296455_0010/ 2025-06-16 21:32:07,660 INFO mapreduce.Job: Running job: job_1750071296455_0010 为什么卡着不动
06-17
<think>我们正在处理用户关于HadoopMapReduce作业卡住不动的问题。用户提到他们运行了一个特定的作业(SougouQ-1.0-SNAPSHOT.jar),并且作业卡在某个阶段没有进展。同时,用户提到了ResourceManagerYarn配置,这暗示问题可能与YARN资源管理有关。根据引用[3],我们曾经看到过类似的问题,即作业无法找到或加载主类(MRAppMaster),这通常是由于mapred-site.xml配置不正确导致的。在引用[3]中,解决方法是在mapred-site.xml中添加三个环境变量属性,指定HADOOP_MAPRED_HOME的路径。但是,用户的问题描述中并没有提到类加载错误,而是作业卡住不动(stucknotprogressing)。因此,我们需要考虑其他可能的原因。常见原因:1.**资源不足**:集群没有足够的资源(如内存、CPU)来启动任务。2.**数据倾斜**:某个reduce任务处理的数据量远大于其他任务,导致该任务运行时间过长。3.**任务失败重试**:任务不断失败并重试,但未达到最大尝试次数,因此作业没有失败但也没有进展。4.**网络或节点问题**:某些节点无法通信,导致任务无法完成。5.**配置问题**:如用户提到的YARN配置,资源分配不合理(如容器内存设置过大,导致没有节点能满足请求)。诊断步骤:1.**检查YARNResourceManager日志**:查看ResourceManager的日志,了解作业调度情况。2.**检查作业的ApplicationMaster日志**:通过YARN的WebUI(ResourceManager的Web界面)找到该应用,查看ApplicationMaster的日志。3.**检查任务日志**:查看具体任务的日志(mapreduce任务),看是否有错误或异常。4.**检查集群资源使用情况**:使用YARN的WebUI或命令`yarnnode-list`查看节点资源使用情况,确认是否有足够的资源。根据引用[3]的经验,我们也可以检查mapred-site.xml的配置,确保环境变量设置正确,尽管这个配置通常解决的是类加载问题。另外,用户提到的是运行`hadoopjarSougouQ-1.0-SNAPSHOT.jar`,所以我们需要确保这个作业本身没有逻辑问题(如死循环等),但通常作业卡住更可能是集群环境问题。建议的解决步骤:1.**检查YARN配置**:确保yarn-site.xml中的资源分配设置合理,特别是:-`yarn.nodemanager.resource.memory-mb`:每个节点可用的物理内存总量。-`yarn.scheduler.maximum-allocation-mb`:单个容器可申请的最大内存。-同时检查mapred-site.xml中MapReduce任务的内存设置(如`mapreduce.map.memory.mb``mapreduce.reduce.memory.mb`)是否在YARN允许的范围内。2.**查看作业状态**:使用命令`yarnapplication-list`找到作业的ApplicationID,然后使用`yarnapplication-status<ApplicationID>`查看状态。3.**查看作业日志**:通过ResourceManager的WebUI(默认端口8088)访问作业的跟踪页面,查看各个任务的进度日志。4.**检查节点状态**:使用`yarnnode-list`查看所有节点的状态,确保节点都是健康的。5.**查看作业计数器**:在作业的跟踪页面,查看计数器,特别是是否有失败的任务。如果发现是资源不足,可以尝试调整作业的资源请求(如果作业允许调整)或者增加集群资源。如果是数据倾斜,可能需要优化作业代码。如果问题仍然无法解决,需要进一步收集日志信息。相关问题:1.如何调整YARN容器的内存设置?2.如何查看YARN应用程序的日志?3.HadoopMapReduce作业出现数据倾斜怎么办?4.如何监控Hadoop集群的资源使用情况?5.如何配置mapred-site.xml以避免类加载错误(如MRAppMaster加载失败)?注意:在回答中,我们引用了引用[3]中关于配置mapred-site.xml的解决方法,但用户的问题描述中没有明确出现类加载错误,所以这个引用只是作为配置检查的一个参考。现在,我们将按照用户的要求,用中文回答,结构清晰,逐步解决问题。</think>### Hadoop MapReduce作业卡住不动的原因分析与解决 根据您的描述(`hadoop jar SougouQ-1.0-SNAPSHOT.jar` 作业卡在ResourceManager阶段),结合Hadoop集群常见故障引用内容,以下是可能原因及解决步骤: --- #### **一、主要原因分析** 1. **YARN资源配置错误**(最常见) - **容器内存分配不足**:Map/Reduce任务申请的资源超出节点可用资源,导致资源协商僵局[^3] - **环境变量缺失**:如引用[3]所述,缺失`HADOOP_MAPRED_HOME`路径配置,导致MRAppMaster无法启动 $$ \text{错误概率} \propto \frac{\text{缺失配置项数量}}{\text{集群节点数}} $$ 2. **作业特定问题** - **数据倾斜**:某个Reducer处理的数据量过大(如SogouQ日志分析中的热点查询词) - **代码死锁**:自定义MapReduce逻辑存在并发缺陷 3. **集群状态异常** - **NodeManager失联**:部分节点无法响应ResourceManager调度 - **磁盘空间不足**:HDFS存储空间低于警戒阈值(通常<5%) --- #### **二、诊断与解决步骤** **第一步:检查YARN配置** ```xml <!-- 在etc/hadoop/mapred-site.xml中添加 --> <property> <name>yarn.app.mapreduce.am.env</name> <value>HADOOP_MAPRED_HOME=/opt/module/hadoop-3.1.3</value> <!-- 替换实际路径 --> </property> <property> <name>mapreduce.map.env</name> <value>HADOOP_MAPRED_HOME=/opt/module/hadoop-3.1.3</value> </property> <property> <name>mapreduce.reduce.env</name> <value>HADOOP_MAPRED_HOME=/opt/module/hadoop-3.1.3</value> </property> ``` > ✅ 引用[3]已证实此配置可解决MRAppMaster加载失败问题 **第二步:验证资源分配** ```bash # 检查资源请求是否匹配集群容量 yarn node -list # 示例输出: Node-1: <memory:8192, vCores:8> ``` - 确保 `mapreduce.map.memory.mb` `mapreduce.reduce.memory.mb` 的值小于节点可用内存 - 若存在 **资源超限**,需调整: ```xml <property> <name>yarn.scheduler.maximum-allocation-mb</name> <value>8192</value> <!-- 必须 ≥ map/reduce任务内存请求 --> </property> ``` **第三步:检查作业状态** ```bash # 1. 获取Application ID yarn application -list | grep "SougouQ" # 2. 查看详细状态 yarn application -status <Application_ID> # 3. 检查任务日志(关键!) yarn logs -applicationId <Application_ID> | grep -C 10 "ERROR" ``` - 重点关注 `Container exited with non-zero exit code` 类错误 **第四步:排查数据倾斜**(针对SogouQ数据集) - 在Mapper中加入数据分布统计: ```java context.getCounter("Custom", "Key_" + key.toString().substring(0,3)).increment(1); ``` - 在ResourceManager UI的 **作业计数器** 页面观察Key分布 --- #### **三、预防性措施** 1. **启用堆栈监控** ```bash # 添加JVM监控参数到mapred-site.xml <property> <name>mapreduce.map.java.opts</name> <value>-XX:+PrintGCDetails -XX:+PrintGCTimeStamps</value> </property> ``` 2. **配置资源超时** ```xml <property> <name>yarn.app.mapreduce.am.job.timeout</name> <value>600000</value> <!-- 10分钟超时 --> </property> ``` ---
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值