#include<iostream>
#include<string>
#include<vector>
#include<map>
using namespace std;
bool judge(string str);
void substr(string str);
bool Prime(int i);
int main()
{
/*輸入一個只含有英文字母的字符串
輸出最大回文子串的長度及此長度迴文子串的個數
(迴文不區分大小寫)。
*/
//string input;
//cin>>input;
//substr(input);
/*
哥德巴赫猜想
任何一個大於2的偶數均可表示爲兩個素數之和。
輸入m, n(6<=m<=n<=50),
則把[m, n]內的所有偶數表示成兩個素數之和的形式。
輸出這些素數及其出線的次數,
輸出次序按照素數出現的次數從多到少輸出;
若出線次數相同,按照素數從大到小輸出;
若偶數有多種素數相加形式,則把所有的情況都輸出,
每種情況佔一行。
*/
return 0;
}
//判斷str是否是迴文字符串
bool judge(string str)
{
for(int i = 0;i<str.length()/2;i++)
{
if(str[i]!=str[str.length()-1-i]) return false;
}
return true;
}
//暴力解法:二重循環確定子串範圍
void substr(string str)
{
//將所有字符轉大寫
for(int t = 0;t<str.length();t++)
str[t] = toupper(str[t]);
for(int i = str.length();i>1;i--)
{
bool flag=false;
int count=0;
for(int j = 0;j<str.length()-i+1;j++)
{
//cout<<"j:"<<j<<"i:"<<i;
string sub = str.substr(j,i);
//cout<<sub<<endl;
if(judge(sub)==true)
{
//cout<<"是迴文:"<<sub<<endl;
flag = true;
count++;
}
}
if(flag==true)
{
cout<<i<<" "<<count<<endl;
return;
}
}
}
bool Prime(int i)
{
//判斷是否爲素數
for(int j=2;j<i;j++)
{
if(i%j==0) return false;
}
return true;
}
vector<map<int,int>> dicarji(vector<map<int,int>> v1,vector<map<int,int>> v2)
{
vector<map<int,int>> res;
for(int i=0;i<v1.size();i++)
{
for(int j=0;j<v2.size();j++)
{
map<int,int> n1 = v1[i];
map<int,int> n2 = v2[j];
map<int,int> m1,m2;
void gotbahe(int m;int n)
{
//取m-n中的偶數進行處理
for(int p=m,p<n+1;p++)
{
if(p%2==1) return;
map<int,int> result
for(int i=3;i<p-i+1;i++)
{
if(Prime(i)==true&&Prime(p-i)==true)
{
if(map.find(i)==-1) map[i]=1;
else map[i]+=1;
if(map.find(p-i)==-1) map[p-i]=1;
else map[p-i]+=1;
}