一道简单的代数题目

northwolves 2008-11-02 12:33:25
加精
1. 四个不同自然数a<b<c<d 满足a^2+b^2+c^2+d^2=abcd,列出1亿内的所有组合。

2. n个不同自然数a1<a2<....<an 满足a1^2+a2^2+....+an^2=a1*a2*...*an,列出1亿内的所有组合。


...全文
4289 174 打赏 收藏 转发到动态 举报
写回复
用AI写文章
174 条回复
切换为时间正序
请发表友善的回复…
发表回复
nsj168 2012-03-06
  • 打赏
  • 举报
回复
太不好试算了
半天找到一个2,6,22,262
jdtxse 2010-05-16
  • 打赏
  • 举报
回复
学习了
dike2018 2010-01-18
  • 打赏
  • 举报
回复
好啊
versacexw 2008-11-18
  • 打赏
  • 举报
回复
好难啊 !!!
zhangshouyi 2008-11-18
  • 打赏
  • 举报
回复
x 不出来捏 。。。。。。。。。。。。。。。。。。
hotrice 2008-11-18
  • 打赏
  • 举报
回复
厉害,感觉应该用数论的方法来分析会比较好,可惜我不熟
liguangwen86 2008-11-18
  • 打赏
  • 举报
回复
up
real_name 2008-11-18
  • 打赏
  • 举报
回复
不简单啊
ziqizhulin 2008-11-18
  • 打赏
  • 举报
回复
貌似第一题有点类似与水仙花束啊!不过还是不会解,看了下,貌似有点难懂
ZKM_ZHANG 2008-11-18
  • 打赏
  • 举报
回复
up
ljily000 2008-11-17
  • 打赏
  • 举报
回复
看似简单的问题,算法真多!
fengwenqi 2008-11-17
  • 打赏
  • 举报
回复
#include <stdio.h>
#include <gmp.h>
#include <math.h>
#include <set>
using namespace std;
#ifndef N
#define N 4
#endif
#define MAX_COUNT 10000
typedef struct sDataEntry{
mpz_t datas[N];
mpz_t nc;
sDataEntry(){
int i;
for(i=0;i<N;i++)mpz_init(datas[i]);
mpz_init(nc);
}
sDataEntry(const sDataEntry& d){
int i;
for(i=0;i<N;i++)mpz_init(datas[i]);
mpz_init(nc);
for(i=0;i<N;i++){
mpz_set(datas[i],d.datas[i]);
}
mpz_set(nc,d.nc);
}
~sDataEntry(){
int i;
for(i=0;i<N;i++)mpz_clear(datas[i]);
mpz_clear(nc);
}
void set_nc(){
int i;
mpz_t tmp;
mpz_init(tmp);
mpz_set_ui(nc,0);
for(i=0;i<N;i++){
mpz_mul(tmp,datas[i],datas[i]);
mpz_add(nc,nc,tmp);
}
mpz_clear(tmp);
}
bool operator<(const struct sDataEntry& s)const{
int i;
int c=mpz_cmp(nc,s.nc);
if(c!=0)return c<0;
for(i=N-1;i>=0;i--){
int c=mpz_cmp(datas[i],s.datas[i]);
if(c!=0)return c<0;
}
return false;
}
bool operator==(const struct sDataEntry& s)const{
int i;
for(i=N-1;i>=0;i--){
int c=mpz_cmp(datas[i],s.datas[i]);
if(c!=0)return false;
}
return true;
}
}DataEntry;

set<DataEntry> results;

DataEntry t;
int td[N];
void search_last()
{
long long mul=1LL;
long long sum=0LL;
int i;
if(td[N-3]==1)return;///No solution available
for(i=0;i<N-2;i++){
mul*=td[i];
sum+=(long long)td[i]*td[i];
}
if(mul<=2LL)return;///No solution available;
long long d=sum/(mul-2LL);
int up=(int)sqrt(d+0.01);
for(i=td[N-3];i<=up;i++){
td[N-2]=i;
long long a=sum+(long long)i*i;
long long b=mul*i;
long long c=b*b-4*a;
if(c<0)continue;
int u=(int)sqrt((double)c);
if(u*(long long)u<c)u=u+1;
if(u*(long long)u==c){///Found a solution now
if((b-u)&1)continue;///Invalid
td[N-1]=(int)((b-u)/2);
int j;
for(j=0;j<N;j++){
mpz_set_ui(t.datas[j],td[j]);
}
t.set_nc();
results.insert(t);
}
}
}

void search(int last)
{
int i;
if(last==N-2){
search_last();
return;
}
long long mul=1LL;
long long mul2;
double ub;
for(i=0;i<last;i++){
mul*=td[i];
}
if(mul>N)return;
ub=pow((double)N/(double)mul,1.0/(N-2-last))+0.01;
i=1;if(last>0)i=td[last-1];
for(;i<=(int)ub;i++){
td[last]=i;
search(last+1);
}
}
int tcount=0;
void dump(const DataEntry& d)
{
int i;
for(i=0;i<N-1;i++){
if(mpz_cmp(d.datas[i],d.datas[i+1])==0)return;
}
for(i=0;i<N;i++){
mpz_out_str(stdout,10,d.datas[i]);
printf("\t");
}
printf("\n");
}

bool gens(const DataEntry& d)///return false when tcount reaches MAX_COUNT
{
mpz_t sum;
mpz_t tmp;
mpz_init(sum);mpz_init(tmp);
int i,j;
mpz_set_ui(sum,0);
for(i=0;i<N;i++){
mpz_mul(tmp,d.datas[i],d.datas[i]);
mpz_add(sum,sum,tmp);
}
for(i=0;i<N;i++){
if(i>0&&mpz_cmp(d.datas[i],d.datas[i-1])==0)
continue;
mpz_mul(tmp,d.datas[i],d.datas[i]);
mpz_sub(tmp,sum,tmp);
mpz_div(tmp,tmp,d.datas[i]);
if(mpz_cmp(tmp,d.datas[N-1])>0){
for(j=0;j<i;j++){
mpz_set(t.datas[j],d.datas[j]);
}
for(j=i;j<N-1;j++){
mpz_set(t.datas[j],d.datas[j+1]);
}
mpz_set(t.datas[j],tmp);
t.set_nc();
set<DataEntry>::iterator lit;
lit=results.find(t);
if(lit==results.end()){
results.insert(t);
tcount++;
}
}
}
mpz_clear(sum);mpz_clear(tmp);
return tcount<MAX_COUNT;
}

void gen_more()
{
set<DataEntry>::iterator it;
for(it=results.begin();it!=results.end();++it){
if(!gens(*it))
break;
}
mpz_t maxt;
mpz_init(maxt);
mpz_set(maxt,it->nc);
set<DataEntry>::iterator nit;
for(nit=results.begin();nit!=results.end();++nit){
if(mpz_cmp(nit->datas[N-1],maxt)<=0)
dump(*nit);
}
mpz_clear(maxt);
}

int main()
{
int i;
search(0);
set<DataEntry>::iterator it;
gen_more();
}
yezi2ding 2008-11-16
  • 打赏
  • 举报
回复
楼上的都是老师 学习
wgt2008 2008-11-15
  • 打赏
  • 举报
回复
顶,谁这么无聊啊!
Larry316 2008-11-15
  • 打赏
  • 举报
回复
up
jacky87 2008-11-15
  • 打赏
  • 举报
回复
慢慢研究学习中
北极夕阳 2008-11-14
  • 打赏
  • 举报
回复
太好了,慢慢学习
jjqf_2008 2008-11-14
  • 打赏
  • 举报
回复
看来得继续好好学习数学。。。。
ksharer 2008-11-14
  • 打赏
  • 举报
回复
public class Test1 {
public static void main(String[] args) {
int a,b,c,d;
for(a=2;a<100;a += 2) {
b=a+2;
for(;b<10000;b += 2) {
c=b+2;
for(;c<10000;c += 2) {
d=c+2;
for(;d<100000;d += 2) {
if(a*a+b*b+c*c+d*d == a*b*c*d) {
System.out.println("a:"+a+" b:"+b+"c:"+c+"+" d:"+d); }
}
}
}
}
}
}
考验你机子的时候到了,^_^
  • 打赏
  • 举报
回复
mark...
加载更多回复(154)
大家都是抱着对算法与数据结构极大的兴趣才参加集训的,我们也希望大家学有所成,但是刚刚接触信息学领域的同学往往存在很多困惑,不知道从何入手学习,在这篇向导里,我希望能将自己不多的经验与大家分享,希望对各位有所帮助. 一、语言是最重要的基本功 无论侧重于什么方面,只要是通过计算机程序去最终实现的竞赛,语言都是大家要过的第一道关.亚洲赛区的比赛支持的语言包括C/C++与JAVA.虽然JAVA在应用极为广泛,但是其运行速度不可恭维.而且在以往的比赛中来看,大多数队伍还是采用了C或者C++.而且C语言是大家接触的第一门编程语言,所以我们集训队都采用C和C++混编的方式写代码. 新来的同学可能C的基础知识刚刚学完,还没有接触过C++,其实在赛场上使用纯C的选手还是大有人在的,它们主要是看重了纯C在效率上的优势,所以这部分同学如果时间有限,并不需要急着去学习新的语言,只要提高了自己在算法设计上的造诣,纯C一样能发挥巨大的威力.但是我还是希望大家都能够学点C++. C++相对于C,在输入输出流上的封装大大方便了我们的操作,同时降低了出错的可能性,并且能够很好地实现标准流与文件流的切换,方便了调试的工作。如果有些同学比较在意这点,可以尝试C和C++的混编,毕竟仅仅学习C++的流操作还是不花什么时间的。 C++的另一个支持来源于标准模版库(STL),库中提供的对于基本数据结构的统一接口操作和基本算法的实现可以缩减我们编写代码的长度,这可以节省一些时间。但是,与此相对的,使用STL要在效率上做出一些牺牲,对于输入规模很大的题目,有时候必须放弃STL,这意味着我们不能存在“有了STL就可以不去管基本算法的实现”的想法;另外,熟练和恰当地使用STL必须经过一定时间的积累,准确地了解各种操作的时间复杂度,切忌对STL中不熟悉的部分滥用,因为这其中蕴涵着许多初学者不易发现的陷阱。像STL中的很多容器, vector,queue,stack,map,set等一定要比较熟悉,STL中的sort是必需要掌握的.掌握这些STL知识后写代码的时候相对于纯C会节省不少时间. C语言学习推荐:C程序设计(谭浩强编著) C++学习推荐: C++Prime, C++大学教程.(其实基本上的C++教程都行的…) STL学习推荐: C++Prime,STL标准库.(理论联系实际,边学就用学的最快) 二、以数学为主的基础知识十分重要 虽然被定性为程序设计竞赛,但是参赛选手所遇到的问题更多的是没有解决问题的思路,而不是有了思路却死活不能实现,这就是平时积累的基础知识不够。竞赛中对于基础学科的涉及主要集中于数学,此外对于物理、电路等等也可能有一定应用,但是不多。因此,大一的同学也不必为自己还没学数据结构而感到不知从何入手提高,把数学捡起来吧!下面来谈谈在竞赛中应用的数学的主要分支。 1、离散数学——作为计算机学科的基础,离散数学是竞赛中涉及最多的数学分支,其重中之重又在于图论和组合数学,尤其是图论。 图论之所以运用最多是因为它的变化最多,而且可以轻易地结合基本数据结构和许多算法的基本思想,较多用到的知识包括连通性判断、DFS和BFS,关节点和关键路径、欧拉回路、最小生成树、最短路径、二部图匹配和网络流等等。虽然这部分的比重很大,但是往往也是竞赛中的难题所在,如果有初学者对于这部分的某些具体内容暂时感到力不从心,也不必着急,可以慢慢积累。 竞赛中设计的组合计数问题大都需要用组合数学来解决,组合数学中的知识相比于图论要简单一些,很多知识对于小学上过奥校的同学来说已经十分熟悉,但是也有一些部分需要先对代数结构中的群论有初步了解才能进行学习。组合数学在竞赛中很少以难题的形式出现,但是如果积累不够,任何一道这方面的题目却都有可能成为难题。 2、数论——以素数判断和同余为模型构造出来的题目往往需要较多的数论知识来解决,这部分在竞赛中的比重并不大,但只要来上一道,也足以使知识不足的人冥思苦想上一阵时间。素数判断和同余最常见的是在以密码学为背景的题目中出现,在运用密码学常识确定大概的过程之后,核心算法往往要涉及数论的内容。 3、计算几何——计算几何相比于其它部分来说是比较独立的,就是说它和其它的知识点很少有过多的结合,较常用到的部分包括——线段相交的判断、多边形面积的计算、内点外点的判断、凸包等等。计算几何的题目难度不会很大,但也永远不会成为最弱的题。 4、线性代数——对线性代数的应用都是围绕矩阵展开的,一些表面上是模拟的题目往往可以借助于矩阵来找到更好的算法。 5、概率论——竞赛是以黑箱来判卷的,这就是说你几乎不能动使用概率算法的念头,但这也并不是说概率就没有用。关于这一点,只有通过一定的练习才能体会。而且近年来概率题出现的次数越来越多了.
解除C语言实训烦恼 “计算机能力强化实训”(C语言)任务书 一、实训目的 C语言程序设计是本科工科类各专业的重要基础课,主要学习程序设计的基本概念和方法,通过本门课程学习,使学生掌握C语言的基本原理,熟练掌握程序设计的基础知识、基本概念;掌握程序设计的思想和编程技巧。 实训是在学生已经具备了使用C语言编写简单的应用程序的能力,为使学生对C语言有更全面的理解,进一步提高运用C语言编程解决实际问题的能力,通过提出算法、指定输入输出来设计一个解决方案。并为参加计算机等级考试作准备。 二、实训的基本内容和要求 参加实训的学生,应当认真完成实训的全部内容。最终提交实训成果来证明其独立完成各种实际任务的能力。从而反映出理解和运用本课程知识的水平和能力。具体如下: 1、代码编写规范,形成良好的编程习惯; 2、程序须有一定的健壮性和必要的提示信息,考虑问题的多种可能和边界数据。 3、提交实训报告电子稿、装订的打印稿。实训报告内容包括以下几个方面:  程序的总体设计和算法分析。  程序流程图、函数说明  源程序代码清单  测试数据和测试过程记录  遇到的问题及解决方法分析  实训小结 4. 程序运行方式 构建一个简易菜单,形如: 用户通过输入数值选择所需运行的子程序,当一个子程序运行结束后回到菜单界面,直至用户输入0后退出程序。 5.实训选题 每人至少做6题,题目如下(每人的题目由任课老师安排) (1)编写一个程序实现如下功能:一个整型数组有10个元素,删除所有值为n的元素。要求: ① 主函数完成n的输入,数组元素输入以及删除后数组元素的输出。 ② 删除功能用子函数完成。 (2)编写一个程序实现如下功能:输入10个学生5门课程的成绩,分别用函数求:①每个学生的平均分;②每门课程的平均分;③找出最高的分数所对应的学生和课程。 若输入2个学生的成绩,其运行结果如下图所示。 (3)编写一个程序实现如下功能:找最长的单词。设输入的英文短文不超过一行(假设正文最后有“.”结束,以“,”或空格分隔,不出现其他符号),编程将所有单词输出,并求其中最长单词的长度,并将该单词输出。 (4)编写一个程序实现如下功能:有8位裁判为1个运动员打分,请计算并输出去掉一个最高分和一个最低分后这个运动员的平均得分以及所评分最接近平均分的裁判员号。裁判员号及其所打分数从键盘输入,假设裁判员号为整数,所打分数为实数。 (5)编写一个程序实现如下功能:从键盘输入字符(最多为80个),遇到回车键输入结束,将输入的字符串按奇偶位置拆分,奇数位上的字符在前,偶数位上的字符在后,重新组成新的字符串输出,例如输入: ab12cd3456fg,则经过程序处理后输出: a1c35fb2d46g 。 (6)功能说明:编写程序,实现以下成绩处理功能(输出格式参见示例): 1)输入n和n个成绩(成绩为浮点数类型,数组名记为a,假设1≤n≤50); 2)计算并输出成绩的累加和(记为sum)与平均成绩(记为ave),将≥ave的成绩归为A档,将<ave的成绩归为B档; 3)分别统计A、B两档的人数,计算在总人数中的比率; 4)求出A档学生的最低分和B档学生的最高分,它们与平均成绩的差值; 运行示例: 输入:9 55.5 99.5 50.0 90.0 88 59.5 48 60 78.0 输出: Sum=628.5, Ave=69.8 A: 4,44.4% B: 5,55.6% MinA: 78.0,+8.2 MaxB: 60.0,-9.8 说明:输入的第1个数表示学生人数(n=9),接着输入的9个成绩中,累加和为628.5(所有小数均保留一位小数输出),平均分为69.8分;平均分以上(A档)有4人,占44.4%,平均分以下(B档)有5人,占55.6%;A档的最低分为78分,超出平均分8.2分,B档的最高分为60分,距离平均分还有9.8分的差距。 (7)功能说明:编写程序,通过以下步骤验证一个正整数对是否符合特定的编码规则: 1)输入正整数a与b; 2)计算a的所有不同的质因子(包括1)之积,记为s; 3)如果s等于b,则通过验证,输出“OK”,否则输出“Err”。 输出格式参见以下示例。 运行示例1: 输入:588 42 输出:588: 1*2*3*7=42, OK 说明:输入数为588(对应a)和42(对应b),588的质因子为1、2、3和7,其累乘结果为42(对应s),由s等于b(均为42),输出OK。 运行示例2: 输入:17 55 输出:17: 1*17=17, Err(17!=55) 说明:质因子为1和17,乘积仍为17,不等于b(55),输出Err,及不通过原因“(17!=55)”。 (8)编写一个程序实现如下功能:从字符串中删除指定的字符。同一字母的大、小写按不同字符处理。 例:若程序执行时,输入字符串为:Shanghai Dianji University,从键盘上输入字符:s,则输出后变为:Shanghai Dianji Univerity,如果输入的字符串不存在,则字符串照原样输出。 (9)编写一个函数void fun(char a[],int k,int n),其功能是:删除字符串中指定下标开始的n 个字符。其中,a中放字符串,k中存放指定的下标。 例如,字符串内容为:Hellollo World!,k中值为:5,n中的值为:3,则调用该函数的结果为:Hello World!。 (10)编写一个程序实现如下功能:调用名为tj的函数,求一个二维数组中正数、负数的代数和,以及零的个数。 (11)编写一个程序实现如下功能:调用一个名为gm的函数,该函数实现简单的加密。加密方法如下:先定义一张字母加密对照表: 原字母 a b c d e i k , w 加密后字母 d w k , i a b c e 将需要加密的一行文字输入加密程序,程序根据加密表中的对应关系,可以简单地将输入的文字加密输出,对于表中未出现的字符则不加密。 运行示例: 输入:lajgdike,w 输出:ldjg,abice (12)编写程序验证以下说法:输入一个4位数,该数个、十、百、千位上的数互不相等,由个、十、百、千位上的数组成一个最大数和一个最小数,最大数-最小数,构成一个新的4位数。反复以上运算,使其最终结果为:6174。 要求如下(下面的函数名为建议函数名): ① 用函数 int IsNumberEqual(int number) 检查输入的整数number各数码是否互不相等,全相等返回值为1否则为0; ② 用函数(void ntos (int number, int c[]) )把四位数整数number各位数码分别存入数组c ③ 用函数( void sort (int a[ ] )对4个元素的数组a排序(升序或降序都可以); ④ 由输入整数分解排序后的数组得到最大值和最小值: int getmaxn(int a[ ]) 返回值为最大值 int getminn(int b[ ]) 返回值为最小值 (13)函数 fun 的功能是:计算正整数num的各位上的数字之积。例如,若输入:252,则输出应该是:20。若输入:202,则输出应该是:0。 (14)函数 fun 的功能是:用插入排序法将n个字符进行排序(降序)。(提示: 插入法排序的思路是:先对数组的头两个元素进行排序, 然后根据前两个元素的情况插入第三个元素,再插入第四个元素…)。 (15)爱因斯坦数学题。爱因斯坦曾出过这样一道数学题:有一条长阶梯,若每步跨2阶,则最后剩下1阶,若每步跨3阶,则最后剩下2阶,若每步跨5阶,则最后剩下4阶,若每步跨6阶,则最后剩下5阶,只有每步跨7阶,最后才正好1阶不剩。请问,这条阶梯共有多少阶? (16)猜数游戏 在这个实验中,我们将尝试编写一个猜数游戏程序,这个程序看上去有些难度,但是如果按下列要求循序渐进地编程实现,会发现其实这个程序是很容易实现的。那么,现在就开始吧,先编写第1个程序,然后试着在第1个程序的基础上编写第2个程序,…… 程序1 编程先由计算机“想”一个1~100之间的数请人猜,如果人猜对了,则计算机给出提示“Right!”,否则提示“Wrong!”,并告诉人所猜的数是大(Too high)还是小(Too low),然后结束游戏。要求每次运行程序时机器所“想”的数不能都一样。 程序2 编程先由计算机“想”一个1~100之间的数请人猜,如果人猜对了,则结束游戏,并在屏幕上输出人猜了多少次才猜对此数,以此来反映猜数者“猜”的水平;否则计算机给出提示,告诉人所猜的数是太大还是太小,直到人猜对为止。 程序3 编程先由计算机“想”一个1~100之间的数请人猜,如果人猜对了,则结束游戏,并在屏幕上输出人猜了多少次才猜对此数,以此来反映猜数者“猜”的水平;否则计算机给出提示,告诉人所猜的数是太大还是太小,最多可以猜10次,如果猜了10次仍未猜中的话,结束游戏。 程序4 编程先由计算机“想”一个1~100之间的数请人猜,如果人猜对了,在屏幕上输出人猜了多少次才猜对此数,以此来反映猜数者“猜”的水平,则结束游戏;否则计算机给出提示,告诉人所猜的数是太大还是太小,最多可以猜10次,如果猜了10次仍未猜中的话,则停止本次猜数,然后继续猜下一个数。每次运行程序可以反复猜多个数,直到操作者想停止时才结束。 (17)给小学生出加法考试题 编写一个程序,给学生出一道加法运算题,然后判断学生输入的答案对错与否,按下列要求以循序渐进的方式编程。 程序1 通过输入两个加数给学生出一道加法运算题,如果输入答案正确,则显示“Right!”,否则显示“Not correct! Try again!”,程序结束。 程序2 通过输入两个加数给学生出一道加法运算题,如果输入答案正确,则显示“Right!”,否则显示“Not correct! Try again!”,直到做对为止。 程序3 通过输入两个加数给学生出一道加法运算题,如果输入答案正确,则显示“Right!”,否则提示重做,显示“Not correct! Try again!”,最多给三次机会,如果三次仍未做对,则显示“Not correct! You have tried three times! Test over!”,程序结束。 程序4 连续做10道题,通过计算机随机产生两个1~10之间的加数给学生出一道加法运算题,如果输入答案正确,则显示“Right!”,否则显示“Not correct!”,不给机会重做,10道题做完后,按每题10分统计总得分,然后打印出总分和做错的题数。 (18)学生成绩统计 从键盘输入一个班(全班最多不超过30人)学生某门课的成绩,当输入成绩为负值时,输入结束,分别实现下列功能: 1)统计不及格人数并打印不及格学生名单; 2)统计成绩在全班平均分及平均分之上的学生人数,并打印这些学生的名单; 3)统计各分数段的学生人数及所占的百分比。 提示:可考虑用两个一维数组实现学生成绩和学生信息的存储。 (19)歌手大赛评分 某歌手大赛,共有十个评委给选手打分,分数采用百分制,去掉一个最高分,去掉一个最低分,然后取平均分,得到歌手的最后成绩。 (20)统计 输入一行字符,以回车键作为结束标志,分别统计出大写字母、小写字母、空格、数字和其它字符的个数。 (21)求 的值,其中a是一个数字,如2+22+222+2222+22222(此时a=2,n=5),a和n均由键盘输入。 (22)读入一批正整数(以零或负数为结束标志),求其中的奇数和。 (23) 利用泰勒级数sin(x)≈ 计算sin(x) 的值。要求最后一项的绝对值小于10-5,并统计出此时累加了多少项(x由键盘输入)。 (24)最大值、最小值及其交换 输入一个正整数n (1代数学家张丘建在他的《算经》中提出了一个著名的“百钱百鸡”问题:鸡翁一,值钱五;鸡母一,值钱三;鸡雏三,值钱一。百钱买百鸡,问翁、母、雏各几何。 (27)有一堆鱼,由A、B、C、D、E五人先后进行分配。A第一个到来,他将鱼平分作5份,把多余的一条扔回湖中,拿走自己分好的一份回家去了;B第二个到来,也将鱼平分为5份,扔掉多余的一条,只拿走自己分好的一份;接着C、D、E依次到来,也按同样的方法分鱼。问这堆鱼共有多少条?每个人到来时看到的鱼数是多少条? (28)约瑟夫环问题:编号为1,2,3,...,n的n个人按顺时针方向围坐一圈,每人持有一个正整数密码。一开始任选一个正整数m作为报数上限值,从第一个人开始按顺时针报数,报到m时停止,报m的人出列,将他的密码作为新的m值,从他在顺时针方向的下一个人开始重新从1报数,如此下去,直到所有人全部出列为止。设计程序求出出列顺序。 (29)某公司在传输数据过程中为了安全要对数据进行加密,若传递的是四位的整数,对其进行加密的规则为:每位数字都加上5,然后用和除以10的余数代替该数字,再将第一位和第四位交换,第二位和第三位交换。如:输入数字7659,则加密后的数字为4012 (30) 将十进制正整数用除n取余法转换为n进制数输出。(n从键盘输入) (31)从键盘输入一行字符,统计其中有多少单词,假设单词之间以逗号分隔。 (32)从键盘输入一字符串,放在字符数组a中,将字符数组a中下标值为偶数的元素按从小到大排序。 (33)编写程序输出以下杨辉三角形(要求输出10行)。 1 1 1 1 2 1 1 3 3 1 1 4 6 4 1 1 5 10 10 5 1 … … … … … … (34)编写程序查找数值18在以下二维数组中第一次出现的位置。 3 4 5 18 8 12 16 54 43 34 18 7 (35)设有4行4列的数组a,其元素a[i][j]=3*i+2*j-6。编写程序,实现如下功能: ① 求第二行4元素的累加和; ② 求第四列4元素的平均值; ③ 求主对角线4元素中负数的个数。 (36)编写程序输出100~1000内的可逆素数。可逆素数是指:一个素数将其各位数字的顺序倒过来构成的反序数也是素数。如157和751均为素数,它们是可逆素数。要求调用两个子函数实现。 (37)输入一行数字字符存入字符数组str[80]中,用num[10]中的数组元素作为计数器来统计每个数字字符的个数。用下标为0的元素统计字符“0”的个数,用下标为1的元素统计字符“1”出现的次数,……。输出每个奇数字符出现的次数。 (38)假设数组a有4行4列的随机整数,计算每行的平均值,保留两位小数,然后输出平均值和每行的最大值。 (39)输入一行字符串,分别统计字符串中各元音字母(AEIOU)的个数(不分大小写)。 (40)编写程序计算并输出:1 + 12 + 123 + 1234 + …… 的前n(设0

33,008

社区成员

发帖
与我相关
我的任务
社区描述
数据结构与算法相关内容讨论专区
社区管理员
  • 数据结构与算法社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧