static string FindReg(string src,string ptrn) {
int LP=ptrn.Length,LS=src.Length;
for(int i=0;i<LS;i++) {
int k=i;
bool ok=true;
for(int j=0;ok && j<LP;) {
int m=1;
bool plus=false;
char cur=ptrn[j++];
for(;j<LP;j++) {
if(ptrn[j]=='+') plus=true;
else if(ptrn[j]==cur) m++;
else break;
}
int s=0;
while(k+s<LS && src[k+s]==cur) s++;
if(s<m) {
ok=false; break;
} else if(plus) k+=s;
else k+=m;
}
if(ok) return src.Substring(i,k-i);
}
return null;
}
char[,] matr=new char[3,3];
for(int i=0;i<19683;i++){
int a=i;
for(int j=9;--j>=0;){
matr[j/3,j%3]=(char)('a'+a%3);
a/=3;
}
Process(matr);
}
private static void DrawYinYang(Graphics gr,int xctr,int yctr,int rmax,int rint,int ysmall,int rsmall) {
Brush white=Brushes.White;
Brush black=Brushes.Black;
Pen BlackPen=new Pen(Color.Black,2*(rmax-rint));
gr.FillPie(black,xctr-rmax,yctr-rmax,2*rmax,2*rmax,-90,180);
gr.FillEllipse(white,xctr-rint/2,yctr-rint,rint,rint);
gr.FillEllipse(black,xctr-rint/2,yctr,rint,rint);
gr.FillEllipse(white,xctr-rsmall,yctr+ysmall-rsmall,2*rsmall,2*rsmall);
gr.FillEllipse(black,xctr-rsmall,yctr-ysmall-rsmall,2*rsmall,2*rsmall);
double rcircle=(rmax+rint)/2.0;
gr.DrawEllipse(BlackPen,(float)(xctr-rcircle),(float)(yctr-rcircle),(float)(2*rcircle),(float)(2*rcircle));
}
На каждом отрезке от 10*n до 10*n+9 таких чисел ровно 5. Поэтому нам достаточно посчитать число таких полных отрезков, и обработать краевые отрезки. Пусть sumdig(n) - функуция, которая выдаёт остаток от деления суммы цифр n на 2. Тогда: int s0=(B/10-A/10-1)*5; int s1=(10+sumdig(A/10)-A%10)/2; int s2=(2+B%10-sumdig(B/10))/2; return s0+s1+s2;