using System; using System.Collections.Generic; using System.Linq; //YukiCoder300 平方数 //http://yukicoder.me/problems/no/300 class Program { static string InputPattern = "InputX"; static List GetInputList() { var WillReturn = new List(); if (InputPattern == "Input1") { WillReturn.Add("4"); //1 } else if (InputPattern == "Input2") { WillReturn.Add("8"); //2 } else if (InputPattern == "Input3") { WillReturn.Add("459431198626"); //114514 } else { string wkStr; while ((wkStr = Console.ReadLine()) != null) WillReturn.Add(wkStr); } return WillReturn; } static void Main() { List InputList = GetInputList(); long X = long.Parse(InputList[0]); if (X == 1) { Console.WriteLine(1); return; } Dictionary SoinSuuDict = ExecSoinSuuBunkai(X); long Answer = 1; foreach (var EachPair in SoinSuuDict) { if (EachPair.Value % 2 == 1) Answer *= EachPair.Key; } Console.WriteLine(Answer); } //素因数分解 static Dictionary ExecSoinSuuBunkai(long pTarget) { var WillReturn = new Dictionary(); for (long I = 2; I <= pTarget; I++) { while (pTarget % I == 0) { if (WillReturn.ContainsKey(I)) WillReturn[I]++; else WillReturn[I] = 1; pTarget /= I; } } return WillReturn; } }