hdoj 1313(这个程序写的真糟糕)

来源:互联网 发布:中国域名网 编辑:程序博客网 时间:2024/05/17 05:06
1 在失败当中寻找成功。#include<iostream>#include<stdio.h>#include<string>#include<algorithm>using namespace std;#define MAX 100char boss[MAX];int newboss[MAX];int newbosskey;int news[MAX];int newskey;void boss_newboss(){ int i=0;char temp[MAX]; newbosskey=strlen(boss)/2; for(i=0;i<strlen(boss);i++) {  temp[strlen(boss)-i-1]=boss[i]; } for(i=0;i<strlen(boss);i=i+2) {  newboss[i/2]=(temp[i]-'0')+(temp[i+1]-'0')*10; }}void boss_news(int n){ //转化分两部,第一部反转 char temp[MAX];int i; //这个初始化很重呀,因为后边要乘,这里做是为啦不出现负值 for(i=0;i<MAX;i++) {  temp[i]='0'; } for(i=0;i<strlen(boss);i++) {  temp[i]=boss[strlen(boss)-1-i]; } //反转完成以后,开始转存 int pass[MAX];int passkey=strlen(boss)/2; for(i=0;i<=strlen(temp);i++,i++)//这里这样写是因为7到达8的时候也行 {  pass[i/2]=(temp[i]-'0')+(temp[i+1]-'0')*10; } //开始计算 int carry=0; for(i=0;i<passkey;i++) {  int result=pass[i]*n+carry;  //如果说不能够除尽   if(result/100>0)  {   int zhen=result/100;   int yush=result%100;   pass[i]=yush;   carry=zhen;  }  else  {   int yush=result%100;   pass[i]=yush;   carry=0;  } } //最后一位 int result=pass[passkey]*n+carry; if(result/100>0) {  int zhen=result/100;  int yush=result%100;  pass[passkey]=yush;  pass[passkey+1]=zhen;  passkey++; } else {  int yush=result%100;  pass[passkey]=yush; }  //输出 for(i=0;i<passkey;i++) {  news[i]=pass[i]; } newskey=passkey;}int compare(const void *a,const void *b) {  return *(int *)a-*(int *)b; } int same(){ if(newbosskey!=newskey) {  return 0; } else {  int j=0;  for(j=0;j<newskey;j++)  {   if(newboss[j]!=news[j])   {    return 0;   }  }  return 1; }}int main(){ freopen("input.txt","r",stdin); while(scanf("%s",boss)!=EOF) {  boss_newboss();int i=1;int n=strlen(boss);int sameflag=1;  for(i=1;i<=n;i++)  {   boss_news(i);   qsort(newboss,newbosskey,sizeof(int),compare);   qsort(news,newskey,sizeof(int),compare);   if(!same())   {    sameflag=0;break;   }  }  if(sameflag==0)  {   printf("%s is not cyclic\n",boss);  }  else  {   printf("%s is cyclic\n",boss);    } } return 0;}/*1 char比较  int compare(const void *a,const void *b ){ return strcmp((char *)a,(char *)b);} 2 int比较int compare(const void *a,const void *b) {  return *(int *)a-*(int *)b; }3必须一个一个比较,如果两个两个的比较。142857和428571会不相同。*/