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;
}
浙公网安备 33010602011771号