Online JudgeProblem SetAuthorsOnline ContestsUser
Web Board
Home Page
F.A.Qs
Statistical Charts
Problems
Submit Problem
Online Status
Prob.ID:
Register
Update your info
Authors ranklist
Current Contest
Past Contests
Scheduled Contests
Award Contest
User ID:
Password:
  Register

Re:为什么run time error 啊?求救!!大虾帮忙!!

Posted by cpp050300448135 at 2005-05-11 02:33:27 on Problem 1026
In Reply To:Re:为什么run time error 啊?求救!!大虾帮忙!! Posted by:cpp050300448135 at 2005-05-11 02:30:52
这个是第二此改变后得程序,先寻找循环节time,然后用取模减少类似1995得多次重复循环……但是由于找公倍数这个步骤得繁琐……所以还是失败了……sigh
#include<iostream>
#include<string>
using namespace std;
void main()
{
	int * array, * b, * c, num, k, time;
	string str,result;
	while(1)
	{
		cin>>num;
		if(num==0) break;
		array=new int[num];
		b=new int[num];
		c=new int[num];
		
		for(int i=0; i<num; i++)
		{
			cin>>array[i];
			b[i]=i+1;
		}
		for(int ii=0; ii<num; ii++)
		{
			for(time=i=1;;i++)
			{
				b[i-1]=array[b[i-1]-1];	
			    if(b[i-1]==i) break;
			    else time++;
			}
			c[ii]=time;
		}
		for(i=time=0; i<num; i++)
			if(c[i]>time) time=c[i];
		
		for(;;time++)
		{
			for(int aa=i=0; i<num; i++)
			{
				if(!(time%c[i])) aa++;
				else 
				{
					break;
					aa++;
				}
			}
			if(aa==num) break;
		}

	for(;;)
		{
			cin>>k;
			if(k==0) break;
			cin.ignore(1,'\n');
			getline(cin, str);
            str.resize(num, ' ');
			result.resize(num, ' ');
			for(i=0; i<(k%time); i++)
			{
				for(int j=0; j<num; j++)
					result[array[j]-1]=str[j];
				str=result;
			}
			cout<<result;
		}
		if(k==0) cin>>num;
		if(num==0) break;
	}
}

Followed by:

Post your reply here:
User ID:
Password:
Title:

Content:

Home Page   Go Back  To top


All Rights Reserved 2003-2013 Ying Fuchen,Xu Pengcheng,Xie Di
Any problem, Please Contact Administrator