Excel Sheet Row Numbers

Given the sequence S1 = {a,b,c,d,...,x,y,z,aa,ab,ac.... } and given that this sequence corresponds (term for term) to the sequence S2 = {0,1,2,3,....}. Write code to convert an element of S2 to the corresponding element of S1.

solution:

// ExcelSheetRowNumbers.cpp : Defines the entry point for the console application.
//

#include "stdafx.h"
#include <string>
#include <iostream>
#include <math.h>

using namespace std;
int setinitial(int num, string& result, int& len)
{
	if(num<0) 
		return -1;
	else 
	{
		int remain = 0;
		int n = 1;
		int temp = num;
		while(temp>=0)
		{
			  temp = temp - pow((double)26,(double)n);  //careful here, need to add double
			  
			  if(temp < 0)
			  {
				temp = temp + pow((double)26,(double)n);
				string result_temp(n,'a');
				result = result_temp;
				return temp;
			  }
			  n++;
		}
	
	}

}
void setresults(string& result, int remain)
{
	int n = result.size()-1;
	int i = 0;
	while(i <=n)
	{
		int temp = (int)(pow((double)26,(double)(n-i)));
		result[i] = remain / temp + 'a';
		remain = remain % temp;
		i++;
	}

}

int _tmain(int argc, _TCHAR* argv[])
{
	string result;
	int num;
	cin >> num;
	int len = 0;
	int remain = setinitial(num,result,len);
	setresults(result,remain);
	cout << result;
	return 0;
}

  

posted @ 2013-07-16 22:27  pgu2  阅读(182)  评论(0)    收藏  举报