| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 4110 人关注过本帖
标题:[讨论]第三期题目,大家做做.
只看楼主 加入收藏
nuciewth
Rank: 14Rank: 14Rank: 14Rank: 14
来 自:我爱龙龙
等 级:贵宾
威 望:104
帖 子:9786
专家分:208
注 册:2006-5-23
收藏
得分:0 
今天又是星期六.给出参考代码.希望大家继续支持,谢谢.
Round and Round We Go.cpp

#include<stdio.h>
#include<string.h>
#define N 100
typedef struct{
char data[N];
int set[10];
int len;
}link;
int is_in(link round,int n)
{
link a;
int i=0,t=0,d;
while(i<round.len)
{
d=round.data[round.len-1-i]-'0';
d=d*n;
a.data[i]=(d+t)%10+'0';
t=(d+t)/10;
i++;
}
while(t>0)
{
d=t%10;
a.data[i++]=t+'0';
t=t/10;
}
a.len=round.len;
i=0;
while(i<10)
a.set[i++]=0;
i=0;
while(i<a.len)
{
d=a.data[i]-'0';
a.set[d]++;
i++;
}
for(i=0;i<10;i++)
if(a.set[i]!=round.set[i])
return(0);
return(1);
}

int main()
{
#ifndef ONLINE_JUDGE
freopen ("Round and Round We Go.txt","r",stdin);
#endif
link round;
int i,d;
while(EOF!=(scanf("%s",round.data)))
{
i=0;
round.len=strlen(round.data);
while(i<10)
round.set[i++]=0;
i=0;
while(i<round.len)
{
d=round.data[i]-'0';
round.set[d]++;
i++;
}
for(i=1;i<=round.len;i++)
if(is_in(round,i)==0)
{
printf("%s is not cyclic\n",round.data);
break;
}
if(i>round.len)
printf("%s is cyclic\n",round.data);
}
return(0);
}

倚天照海花无数,流水高山心自知。
2006-12-02 17:41
nuciewth
Rank: 14Rank: 14Rank: 14Rank: 14
来 自:我爱龙龙
等 级:贵宾
威 望:104
帖 子:9786
专家分:208
注 册:2006-5-23
收藏
得分:0 

Martian Addition.cpp



#include<stdio.h>
#include<string.h>
#define N 150
typedef struct node{
int data[N];
int len;
}link;

void char_int(link &a,char str[],int length)
{
int i;
a.len=length;
for(i=length-1;i>=0;i--)
{
if(str[i]>='a'&&str[i]<='j')
a.data[a.len-i-1]=str[i]-'a'+10;
else
a.data[a.len-i-1]=str[i]-'0';
}
//for(i=0;i<a.len;i++)
//printf("%3d ",a.data[i]);
//printf("\n");
}

void display(link &a)
{
int i;
for(i=a.len-1;i>=0;i--)
{
if(a.data[i]>=10&&a.data[i]<20)
printf("%c",a.data[i]-10+'a');
else
printf("%c",a.data[i]+'0');
}
printf("\n");
}
void Add20(link &a,link &b)
{
int carry,i,len,temp;
len = a.len > b.len ? a.len : b.len;
carry = 0;
for (i =0;i<len;i++)
{
temp = a.data[i] + b.data[i] + carry;
carry = temp/20;
a.data[i] =temp%20;
}
if (carry != 0)
{
a.len = len + 1;
a.data[len] = carry;
}
else
{
a.len = len;
}
display(a);
}


int main()
{
#ifndef ONLINE_JUDGE
freopen("Martian Addition.txt","r",stdin);
#endif
link a,b;
int len1,len2;
int i;
char str1[N],str2[N];
while(EOF!=(scanf("%s%s",str1,str2)))
{
memset (a.data,0,sizeof (int) * N);
memset (b.data,0,sizeof (int) * N);
len1=strlen(str1);
char_int(a,str1,len1);
//display(a);
len2=strlen(str2);
char_int(b,str2,len2);
//display(b);
Add20(a,b);
//for(i=0;i<a.len;i++)
//printf("%3d ",a.data[i]);
//printf("\n");
//display(a);
}
return(0);
}


倚天照海花无数,流水高山心自知。
2006-12-02 17:43
perfect
Rank: 3Rank: 3
等 级:新手上路
威 望:6
帖 子:81
专家分:0
注 册:2006-11-19
收藏
得分:0 

#include <stdio.h>
#include <math.h>

typedef struct
{
char str[61];
int sign[60]; //标记
}string;

string s;

void init( int l ) // 将标记全置为0
{
int i;
for(i=0; i<l; i++)
s.sign[i]=0;
}

int exist( char c, int l ) // 存在c,返回1,否则返回0
{
int i;
for(i=0; i<l; i++)
if(s.str[i]==c && s.sign[i]==0)
{
s.sign[i]=1;
return 1;
}
return 0;
}

main()
{
int i,j,len,flag;
int t,a;
char temp;
while( scanf("%s",s.str)!=EOF )
{
len=strlen(s.str);
a=0; flag=0;
for(i=2; i<=len; i++)
{
init(len);
for(j=len-1; j>=0; j--)
{
t=s.str[j]-'0';
t=t*i+a;
temp=t%10+'0';
a=t/10;
if(exist(temp,len)==0)
{
printf(" %s is not cyclic \n",s.str);
flag=1;
break;
}
}
if(flag==1) break;
}
if(i>len)
if(a==0) //对于最前位,没有进位,才是cyclic
printf(" %s is cyclic \n",s.str);
else printf(" %s is not cyclic \n",s.str);
}
}


片言可以明百意 坐驰可以役万里
2006-12-06 10:58
perfect
Rank: 3Rank: 3
等 级:新手上路
威 望:6
帖 子:81
专家分:0
注 册:2006-11-19
收藏
得分:0 

#include <stdio.h>
#include <string.h>

main()
{
int m,n,len,i,max;
int s,t,arr;
char a[100],b[100],*p;
while(scanf("%s%s",a,b)!=EOF)
{
m=strlen(a);
n=strlen(b);
arr=0;
if(m<n)
{ len=m; p=b; max=n; } // p指向长度较长的数组
else { len=n; p=a; max=m; }
for(i=0; i<len; i++)
{
m--; n--; max--;
if(a[m]>='0' && a[m]<='9')
t=a[m]-'0';
else if(a[m]>='a' && a[m]<='j')
t=a[m]-'a'+10;
else
{ printf("error number\n") ; exit(0); }

if(b[n]>='0' && b[n]<='9')
s=b[n]-'0';
else if(b[n]>='a' && b[n]<='j')
s=b[n]-'a'+10;
else
{ printf("error number\n"); exit(0); }
t=s+t+arr;
if(t>=20)
arr=t/20;
else arr=0;
t%=20;

if(t<9)
p[max]=t+'0';
else if(t>9)
p[max]=t-10+'a';
}
len=max;
for(i=0; i<max; i++)
{
len--;
if(arr==0) break; //短的数组计算完后,若有进位,则继续在长数组中计算
if(p[len]>='0' && p[len]<='9')
t=p[len]-'0';
else if(p[len]>='a' && p[len]<='j')
t=p[len]-'a'+10;
t+=arr;
arr=t/20;
t%=20;
if(t>9)
p[len]=t-10+'a';
else
p[len]=t+'0';
}
if(arr) // 最前位有进位,输出进位的数,相加rn所得的进位不会大于9
printf("%c",arr+'0');
printf("%s\n",p);
}
}


片言可以明百意 坐驰可以役万里
2006-12-06 11:06
jieer
Rank: 1
等 级:新手上路
帖 子:5
专家分:0
注 册:2006-11-19
收藏
得分:0 
第一题,我做了一个,有点麻烦,大家见笑了,上机验证没问题,只是long int 的范围是正负2亿多,对超过范围的数还需将long int 定义为64字节。基本思路:对一个整数m,如果它有n位,那它每一位往后移一位(个位到十位,十位到百位...最后一位到个位)形成的循环数有n个数(放在数组a[20]的前n个元素中),而它×1,×2....×n,共有n个数,只需判断后n个数是否都在前n个数中,在的话,就是!
#include<stdio.h>
main()
{
long int m,n,d,a[20], /*a[20]用来放形成的循环数,n用来表示×1,×2..形成的数*/
int i,j,k,t,c=1,b[20],str[20]; /*b[20]用来表示每一次n在不在a[20]中,c用来表示最终判断*/
clrscr();
for(i=1;i<20;i++)
b[i]=0;
i=0; /*i要清零*/
printf("please input the number!\n");
scanf("%ld",&m);
getchar();
d=m;/*下面m会变,先用d存放m*/
while(m!=0)/*这个循环作用是把个位,十位,百位...按次序放到数组str中*/
{
str[i]=m%10;
m=m/10;
i++;
}
j=i;/*j表示这个数共有多少位*/
for(i=0,t=0;i<j;i++,t++)/*开始求循环数*/
{
k=0;
a[t]=0;
while(k<j)
{
a[t]=a[t]+str[(j-1)-i];
k++;
i++;
i=i%j;
}
}
for(i=1;i<=j;i++)/*开始判断*/
{
n=d*i;
for(t=0;t<j;t++)
if(n==a[t]) b[i-1]=1;
}
for(i=0;i<j;i++)
if(b[i]==0) c=0;/*如果有一个n不满足,就不是*/
if(c==1) printf("the number is a cyclic number!\n");
esle printf("the number is not a cyclic number!");
}
2006-12-06 14:48
iwfy
Rank: 1
等 级:新手上路
威 望:2
帖 子:888
专家分:0
注 册:2007-2-23
收藏
得分:0 
费时几天,循环节的代码弄出来了,但很杂乱,测试下
费了几天的功夫终于把第一个循环节的代码弄出来了,欢迎大家测试,我测试了N遍,高手们给出的几个数都测试通过。代码很杂乱,实在很头疼,有时间了改改,希望高手指正;代码太长了,将近400行.
今天改了两处错误,第一解决了链表超出36位后出错。第二解决了没释放内存的导致出错的错误

B6BI0hlU.rar (10.54 KB) 费时几天,循环节的代码弄出来了,但很杂乱,测试下


[此贴子已经被作者于2007-3-5 17:28:02编辑过]



bgqzl419.rar (10.69 KB) [讨论]第三期题目,大家做做.



wUm6CxpU.rar (10.73 KB) 费时几天,循环节的代码弄出来了,但很杂乱,测试下



ua3DVI09.rar (10.95 KB) 费时几天,循环节的代码弄出来了,但很杂乱,测试下


英语不好还想学编程??逆天之路,不由分说!! 数学太差还想学编程??离经叛道,义无返顾!!
2007-03-04 02:49
zhy20045923
Rank: 1
等 级:新手上路
帖 子:41
专家分:0
注 册:2007-10-3
收藏
得分:0 

我觉得规律是:

142857 * 7 = 999999
052631578947368421 * 19 = 999999999999999999
0434782608695652173913 * 23 = 9999999999999999999999

也即

序列 * (序列长度 + 1) = 9999....999


经典,不过不好实现


2007-10-06 18:11
jiangsongbai
Rank: 1
等 级:新手上路
帖 子:38
专家分:0
注 册:2007-10-5
收藏
得分:0 
回复:(nuciewth)[讨论]第三期题目,大家做做.
ding
2007-10-07 15:26
快速回复:[讨论]第三期题目,大家做做.
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.035128 second(s), 9 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved