diff --git a/8.16/A-Frog copy/A.pdf b/8.16/A-Frog copy/A.pdf
new file mode 100644
index 0000000..de1b01c
--- /dev/null
+++ b/8.16/A-Frog copy/A.pdf	
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:ae5f9bfaf2af1e1d5b3b4baa2946325356b476dad8d42dd1e4494e7ffeabe830
+size 107414
diff --git a/8.16/A-Frog copy/Readme.md b/8.16/A-Frog copy/Readme.md
new file mode 100644
index 0000000..cc02b16
--- /dev/null
+++ b/8.16/A-Frog copy/Readme.md	
@@ -0,0 +1,12 @@
+# ��Ŀ
+* ����
+### ����
+
+### ����
+
+### �ؼ���
+
+### �״���
+* 
+### ������
+* 
\ No newline at end of file
diff --git a/8.16/A-Frog copy/doc/Readme.md b/8.16/A-Frog copy/doc/Readme.md
new file mode 100644
index 0000000..4e768b5
--- /dev/null
+++ b/8.16/A-Frog copy/doc/Readme.md	
@@ -0,0 +1 @@
+# 
\ No newline at end of file
diff --git a/8.16/A-Frog copy/main.cpp b/8.16/A-Frog copy/main.cpp
new file mode 100644
index 0000000..6d98384
--- /dev/null
+++ b/8.16/A-Frog copy/main.cpp	
@@ -0,0 +1,46 @@
+#include <iostream>
+#include<cstdio>
+#include<algorithm>
+#include <cmath>
+#include <cstdlib>
+using namespace std;
+long long exgcd(long long a,int b,int &x,int &y)
+{
+	if(b==0)
+	{
+		//x,yû����ֵ
+		x=1;
+		y=0;
+		return a;
+	}
+	int ret=exgcd(b,a%b,x,y);
+	int tmp=x;
+	x=y;
+	y=tmp-a/b*y;
+	return ret;
+}
+int main()
+{
+	int a,b,c;
+	while(~scanf("%d%d%d",&a,&b,&c))
+	{
+		if(a==0&&b==0&&c==0)
+		{
+			break;
+		}
+		int x0,y0;
+		int g=exgcd(a,b,x0,y0);
+		int x1=(c/g*x0%(b/g)+b/g)%(b/g),y1=(c-a*x1)/b;
+		int y2=(c/g*y0%(a/g)+a/g)%(a/g),x2=(c-b*y2)/a;//��a 
+		x1=abs(x1);x2=abs(x2);y1=abs(y1);y2=abs(y2);//abs()��C������ֻ��int������Ч
+		if(x1+y1<x2+y2||a*x1+b*y1<a*x2+b*y2)
+		{
+			printf("%d %d\n",x1,y1);
+		}
+		else 
+		{
+			printf("%d %d\n",x2,y2);
+		}
+	}
+	return 0;
+}
diff --git a/8.16/A-Frog copy/test/in.txt b/8.16/A-Frog copy/test/in.txt
new file mode 100644
index 0000000..e69de29
diff --git a/8.16/A-Frog copy/test/in2.txt b/8.16/A-Frog copy/test/in2.txt
new file mode 100644
index 0000000..e69de29
diff --git a/8.16/A-Frog copy/test/in3.txt b/8.16/A-Frog copy/test/in3.txt
new file mode 100644
index 0000000..e69de29
diff --git a/8.16/A-Frog copy/test/out.txt b/8.16/A-Frog copy/test/out.txt
new file mode 100644
index 0000000..01ba092
--- /dev/null
+++ b/8.16/A-Frog copy/test/out.txt	
@@ -0,0 +1,7 @@
+## z:\Chao\src\Template\test\in.txt 
+2020/03/14 ���� 11:41:28.68 
+Hello Easy C++ project!
+
+-----------------------------------------------
+Process exited after 200 ms with return value 0
+
diff --git a/8.16/A-Frog/Readme.md b/8.16/A-Frog/Readme.md
index cc02b16..c4ccb8e 100644
--- a/8.16/A-Frog/Readme.md
+++ b/8.16/A-Frog/Readme.md
@@ -1,12 +1,16 @@
-# ��Ŀ
-* ����
+# ���ܵ�Լ��
+* https://vjudge.net/contest/509210#problem/A
 ### ����
-
+һ������Բ���ܵ���������㲻ͬ���ٶȲ�ͬ���ʺ�ʱ�������
 ### ����
-
+exgcd�����Է�����⣬ȡ��С�Ǹ�����
 ### �ؼ���
-
+exgcd�����Է�����⣬ȡ��С�Ǹ�����
 ### �״���
-* 
+* ȡ��С�Ǹ�����
+* exgcd��//x,yû����ֵ
+* ����printf("Impossible");//WA �������
 ### ������
-* 
\ No newline at end of file
+* ��� https://www.luogu.com.cn/problem/solution/P1516
+* ����ͬ�� ���� ͬ�෽�������� https://zhuanlan.zhihu.com/p/451193655
+* ��ѧһ��ͨ1.3.5��������
\ No newline at end of file
diff --git a/8.16/H-Relatives/main.cpp b/8.16/H-Relatives/main.cpp
index 93fe8a1..c9059e6 100644
--- a/8.16/H-Relatives/main.cpp
+++ b/8.16/H-Relatives/main.cpp
@@ -2,19 +2,36 @@
 #include<cstdio>
 #include<algorithm>
 #include <cmath>
+#include <cstdlib>
 using namespace std;
+int q,n;
+int t1=0,t;
 int main()
 {
-    int t;
-    scanf("%d",&t);
-    while(t--)
-    {
-        int n;
-        scanf("%d",&n);
-        for(int i=1;i<=n; i++)
-        {
-
-        }
-    }
-    return 0;
+//	scanf("%d",&t);
+	while(1)
+	{
+		scanf("%d",&n);
+		if(n==0)
+		{
+			break;
+		} 
+//		int len=sqrt(n);
+		int res=n;
+		for(int i=2;i*i<=n;i++)//i=2
+		{
+			if(n%i==0)
+			{
+				res=res-res/i;
+			}
+			while(n%i==0)
+			{
+				n/=i;
+			}
+		}
+		if(n>1)
+		res=res-res/n;
+		printf("%d\n",res);
+	}
+	return 0;
 }
diff --git a/8.16/I-GCD.cpp b/8.16/I-GCD.cpp
new file mode 100644
index 0000000..b646904
--- /dev/null
+++ b/8.16/I-GCD.cpp
@@ -0,0 +1,55 @@
+#include<iostream>
+#include<cmath>
+using namespace std;
+int Euler(int n)
+{
+//	if(n==1) return 1;
+	int res=n;
+	int len=sqrt(n);
+	for(int i=2;i<=len;i++)
+	{
+		if(n%i==0)
+		{
+			n/=i;
+			res=res-res/i;
+//			printf("(%d:%d)",i,res);
+		}
+		while(n%i==0)
+		{
+			n/=i;
+		}
+	}
+	if(n>1)//key!
+	res=res-res/n;
+	return res;
+}
+int main()
+{
+	int t,n,m;
+	int ans;
+	scanf("%d",&t);
+	while(t--)
+	{
+		scanf("%d%d",&n,&m);//������& 
+		int len=sqrt(n);
+		ans=0;
+		for(int i=1;i<=len;i++)
+		{
+			if(n%i!=0) continue;
+			if(i>=m&&i!=n/i)
+			{
+				ans+=Euler(n/i);
+			}
+			if(n/i>=m)
+			{
+				ans+=Euler(i);
+			} 
+			else
+			{
+				break;
+			}
+//			printf("%d:%d\n",n/i,ans);
+		}
+		printf("%d\n",ans);
+	}
+} 
diff --git a/8.16/I-GCDreference.cpp b/8.16/I-GCDreference.cpp
new file mode 100644
index 0000000..1f33d06
--- /dev/null
+++ b/8.16/I-GCDreference.cpp
@@ -0,0 +1,37 @@
+
+#include<cstdio>
+using namespace std;
+int Euler(int n){
+	int m=n;
+	for(int i=2;i*i<=n;i++){
+		if(n%i==0)//��һ���ҵ��ı�Ϊ������
+		{
+			m-=m/i;//����������i�ı�����������Ŀ����  i,2i,3i,������,(m/i)*i 
+			while(n%i==0)
+			n/=i;//�Ѹ�������ȫ��Լ�� 
+			printf("(%d:%d)",i,m);
+		 } 		 
+	}
+	if(n>1)  //����һ���ȸ���n��������� ,Ҳ�����������n 
+		m-=m/n; 
+	return m;
+} 
+int main(){
+	int T;
+	scanf("%d",&T);
+	int N,M;
+	while(T--){
+		scanf("%d%d",&N,&M);
+		long long sum=0;
+		for(int i=1;i*i<=N;i++){//ֻ����������n����ʡʱ�� 
+			if(N%i==0){
+				if(i>=M) sum+=Euler(N/i);//iΪN��Լ����1<=i<=����n�� 
+				if((N/i)!=i&&(N/i)>=M) sum+=Euler(i);//(N/i)��N��Լ����(N/i)>=����N 
+			
+			printf("%d:%d\n",i,sum);}
+		}
+		printf("%lld\n",sum);
+	}
+	return 0;
+} 
+